我有一个 Btree,我试图弄清楚如何遍历它,以便键以升序显示。
我能想到的是,这可以通过递归函数来完成。
做它的伪代码是什么?
我有一个 Btree,我试图弄清楚如何遍历它,以便键以升序显示。
我能想到的是,这可以通过递归函数来完成。
做它的伪代码是什么?
假设您有如下定义:
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]);
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]);
}
}