Added more functions to tree.
This commit is contained in:
parent
cac747f6f6
commit
ad7ad7d974
|
@ -18,7 +18,8 @@ Please contact the author regarding bugs and/or feature requests.
|
|||
|
||||
/*
|
||||
Tree:
|
||||
A data structure in which each node has some child nodes, and data about itself. A tree has only one root node, can have a great number of leaf nodes.
|
||||
A data structure in which each node has some child nodes, and data about itself. A tree has only one root node, can have a great number of leaf nodes. Each node contains some data, and pointers to child
|
||||
nodes.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -45,6 +46,7 @@ TREE_NODE* TEMPLATE(new,TREE_NODE)(TREE_TYPE data, int childNum, ...){
|
|||
assert(node != NULL);
|
||||
node->data = data;
|
||||
node->childCount = childNum;
|
||||
//If there are children to add, add as many as given.
|
||||
if (childNum > 0){
|
||||
va_list args;
|
||||
va_start(args, childNum);
|
||||
|
@ -58,4 +60,39 @@ TREE_NODE* TEMPLATE(new,TREE_NODE)(TREE_TYPE data, int childNum, ...){
|
|||
return node;
|
||||
}
|
||||
|
||||
/*
|
||||
Tree node creation: Empty tree node.
|
||||
Creates a new tree node with no children, just data.
|
||||
*/
|
||||
TREE_NODE* TEMPLATE(newEmpty,TREE_NODE)(TREE_TYPE data){
|
||||
TREE_NODE* node = malloc(sizeof(TREE_NODE));
|
||||
assert(node != NULL);
|
||||
node->data = data;
|
||||
node->childCount = 0;
|
||||
return node;
|
||||
}
|
||||
|
||||
/*
|
||||
Free tree node:
|
||||
Frees a node, and all children of this node.
|
||||
*/
|
||||
void TEMPLATE(free,TREE_NODE)(TREE_NODE* node){
|
||||
for (int i = 0; i < node->childCount; i++){
|
||||
TEMPLATE(free,TREE_NODE)(node->children[i]);
|
||||
}
|
||||
free(node->children);
|
||||
}
|
||||
|
||||
/*
|
||||
Add node:
|
||||
Adds a node to a given parent node.
|
||||
*/
|
||||
void TEMPLATE(addNode,TREE_NODE)(TREE_NODE* node, TREE_NODE newChild){
|
||||
node->childCount = node->childCount + 1;
|
||||
TREE_NODE** oldChildren = node->children;
|
||||
node->children = malloc(node->childCount * sizeof(TREE_NODE*));
|
||||
assert(node->children != NULL);
|
||||
memcpy(node->children, oldChildren, node->)
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue