aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tree.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tree.c b/tree.c
index f6ccc5a..fb38c89 100644
--- a/tree.c
+++ b/tree.c
@@ -245,6 +245,30 @@ tree_count(struct tree_node *tree)
245} 245}
246/* -->8-- */ 246/* -->8-- */
247 247
248/* --8<-- tree_copy */
249struct tree_node *
250tree_copy(struct tree_node *tree)
251{
252 if ( tree ) {
253 struct tree_node *new_node;
254
255 new_node = malloc(sizeof *new_node);
256 if ( new_node != NULL ) {
257 new_node->key = tree->key;
258 new_node->count = tree->count;
259 new_node->left = tree_copy(tree->left);
260 new_node->right = tree_copy(tree->right);
261 }
262 else {
263 ERROR("out of memory");
264 }
265
266 return new_node;
267 }
268 return NULL;
269}
270/* -->8-- */
271
248/* --8<-- tree_isleaf */ 272/* --8<-- tree_isleaf */
249bool 273bool
250tree_isleaf(struct tree_node *tree) 274tree_isleaf(struct tree_node *tree)