如何遍历Btree?

时间:2010-05-10 02:05:39

标签: c++ g++ traversal b-tree tree-traversal

我有一个Btree,我正在试图弄清楚如何遍历它,以便按键按升序显示。

我能弄清楚的是,这可以通过递归函数来完成。

这样做的伪代码是什么?

2 个答案:

答案 0 :(得分:1)

假设你有一个如下定义:

template <class T>
class btree_node
{
    btree_node **child;  // an array of child nodes
    T **element;  // the elements in this node

    unsigned int child_count; // the number of children
                              // the number of elements is 1 less then child_count
};

然后你需要做这样的事情:

void btree_inorder(node):
    for (int i = 0; i < node.child_count; ++i)
    {
        btree_inorder(node.child[i]);
        handle_element(node.element[i]);
    }
    btree_inorder(node.child[node.child_count-1]);

答案 1 :(得分:0)

void traversalBtree(struct node * root){
    int i = 1;
    if(root != NULL){
        while(i <= root->n){
            if(root->leaf == 0)
                traversalBtree(root->link[i]);
            printf("\t%d", root->key[i]);
            i++;
        }
        if(root->leaf == 0)
            traversalBtree(root->link[i]);
    }
}