taskrambler
0.1.9
Web server and task management solution.
Main Page
Related Pages
Data Structures
Files
File List
Globals
walk.c
Go to the documentation of this file.
1
/**
2
* \file
3
*
4
* \author Georg Hopp
5
*
6
* \copyright
7
* Copyright © 2012 Georg Hopp
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the GNU General Public License
20
* along with this program. If not, see <http://www.gnu.org/licenses/>.
21
*/
22
23
#include "
tree.h
"
24
25
void
26
treeWalk
(Tree
this
,
TreeAction
action)
27
{
28
Tree previous =
this
;
29
Tree node =
this
;
30
int
depth = 1;
31
32
while
(NULL != node) {
33
if
(previous ==
TREE_RIGHT
(node)) {
34
previous = node;
35
node = node->parent;
36
depth--;
37
continue
;
38
}
39
40
if
(NULL ==
TREE_LEFT
(node) || previous ==
TREE_LEFT
(node)) {
41
action(node->data, depth);
42
previous = node;
43
44
if
(NULL !=
TREE_RIGHT
(node)) {
45
node =
TREE_RIGHT
(node);
46
depth++;
47
}
else
{
48
node =
TREE_PARENT
(node);
49
depth--;
50
}
51
}
else
{
52
previous = node;
53
node =
TREE_LEFT
(node);
54
depth++;
55
}
56
}
57
}
58
59
// vim: set ts=4 sw=4:
TREE_RIGHT
#define TREE_RIGHT(node)
Definition:
tree.h:28
TREE_PARENT
#define TREE_PARENT(node)
Definition:
tree.h:30
tree.h
treeWalk
void treeWalk(Tree this, TreeAction action)
Definition:
walk.c:26
TREE_LEFT
#define TREE_LEFT(node)
Definition:
tree.h:29
TreeAction
void(* TreeAction)(const void *, const int)
Definition:
tree.h:128
src
tree
walk.c
Generated on Wed Apr 13 2016 23:19:32 for taskrambler by
1.8.10