static void InorderTreeWalk(rb_red_blk_tree* tree, rb_red_blk_node* x,
        void (*walk_func) (const void* key, void* value, void* data), 
        void *data)
{
  if (x != tree->nil) {
    InorderTreeWalk(tree,x->left, walk_func, data);
    walk_func(x->key, x->info, data);
    InorderTreeWalk(tree,x->right, walk_func, data);
  }
}
Beispiel #2
0
//红黑树中序遍历操作,isFirstCall变量目的:令默认参数为Treepoint,下同
void RBTree::InorderTreeWalk(Node* node, bool isFirstCall)
{
	if (isFirstCall == 1)
		node = Treepoint;
	if (node != NIL)
	{
		InorderTreeWalk(node->getLeft(), 0);
		std::cout << node->getKey() << std::endl;
		InorderTreeWalk(node->getRight(), 0);
	}
}
void rb_tree_walk(rb_red_blk_tree* tree, 
        void (*walk_func) (const void* key, void* value, void* data), 
        void *data)
{
    InorderTreeWalk(tree, tree->root->left, walk_func, data);
}