diff options
| -rw-r--r-- | tree.c | 24 |
1 files changed, 24 insertions, 0 deletions
| @@ -245,6 +245,30 @@ tree_count(struct tree_node *tree) | |||
| 245 | } | 245 | } |
| 246 | /* -->8-- */ | 246 | /* -->8-- */ |
| 247 | 247 | ||
| 248 | /* --8<-- tree_copy */ | ||
| 249 | struct tree_node * | ||
| 250 | tree_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 */ |
| 249 | bool | 273 | bool |
| 250 | tree_isleaf(struct tree_node *tree) | 274 | tree_isleaf(struct tree_node *tree) |
