Exemple #1
0
int BSTree_traverse(BSTree *map, BSTree_traverse_cb traverse_cb)
{
    if(map->root) {
        return BSTree_traverse_nodes(map->root, traverse_cb);
    }

    return 0;
}
static inline int BSTree_traverse_nodes(BSTreeNode *node,
                                        BSTree_traverse_cb traverse_cb
                                       )
 {
   int rc = 0;

   if (node->left) {
     rc = BSTree_traverse_nodes(node->left, traverse_cb);
     if (rc != 0) {
       return rc;
     }
   }

   if (node->right) {
     rc = BSTree_traverse_nodes(node->right, traverse_cb);
     if (rc != 0) {
       return rc;
     }
   }

   return traverse_cb(node);
 }
Exemple #3
0
void BSTree_traverse(BSTree* map, BSTree_traverse_callback cb) {
    if(map->root) {
        BSTree_traverse_nodes(map->root, cb);
    }
}