My Project
Main Page
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
rbtree_clear.c
Go to the documentation of this file.
1
#include <
3ds/util/rbtree.h
>
2
#include "
rbtree_internal.h
"
3
4
void
5
rbtree_clear
(
rbtree_t
*tree,
6
rbtree_node_destructor_t
destructor)
7
{
8
rbtree_node_t
*
node
= tree->
root
;
9
10
while
(tree->
root
!= NULL)
11
{
12
while
(node->
child
[
LEFT
] != NULL)
13
node = node->
child
[
LEFT
];
14
15
if
(node->
child
[
RIGHT
] != NULL)
16
node = node->
child
[
RIGHT
];
17
else
18
{
19
rbtree_node_t
*parent = get_parent(node);
20
21
if
(parent == NULL)
22
tree->
root
= NULL;
23
else
24
parent->
child
[node != parent->
child
[
LEFT
]] = NULL;
25
26
if
(destructor != NULL)
27
(*destructor)(
node
);
28
29
node = parent;
30
}
31
}
32
33
tree->
size
= 0;
34
}
node
rbtree_node_t * node
Definition:
rbtree.h:45
RIGHT
#define RIGHT
Definition:
rbtree_internal.h:4
rbtree::size
size_t size
Definition:
rbtree.h:25
rbtree_clear
void rbtree_clear(rbtree_t *tree, rbtree_node_destructor_t destructor)
Definition:
rbtree_clear.c:5
rbtree_internal.h
rbtree.h
rbtree_node
Definition:
rbtree.h:15
rbtree
Definition:
rbtree.h:21
rbtree_node_destructor_t
void(* rbtree_node_destructor_t)(rbtree_node_t *Node)
Definition:
rbtree.h:12
LEFT
#define LEFT
Definition:
rbtree_internal.h:3
rbtree::root
rbtree_node_t * root
Definition:
rbtree.h:23
rbtree_node::child
rbtree_node_t * child[2]
Definition:
rbtree.h:18
source
util
rbtree_clear.c
Generated on Mon Nov 24 2014 23:37:59 for My Project by
1.8.8