2010-05-10 244 views
1

我有一個Btree,我想弄清楚如何遍歷它,以便按鍵顯示升序。如何遍歷Btree?

我所能想象的是,這可以通過遞歸函數來完成。

什麼是僞代碼呢?

+1

我建議讓羅伯特·塞奇威克在C++ *算法的副本:第一部分5 *,或幾乎任何其他經過充分審查的算法文本。 – 2010-05-10 02:07:58

+1

B樹和二叉樹是不同的東西。 – 2010-05-10 02:17:07

+0

Btree和BST不是兩回事嗎? – 2010-05-10 02:17:38

回答

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]);