如何遍历b树以查看它是否是有效的b树

时间:2015-01-30 16:32:14

标签: java algorithm data-structures b-tree

什么是遍历b树的最佳方式,因此我可以确认节点是否正常。我相信对于b-tree

b树的黄金法则是: 对于树中的每个键k - 所有左子项必须具有小于k的键,并且右侧的所有子项必须具有大于k的键。

所以想象我有一个看起来像这样的b树:

                (14)

 (4 7)                   (18 25)

(1,2)(5,6)(8,10,12)    (14,16)(19,21)(26,27,32,36)

以上是正确的b树。

                  (14)

 (**94** 7)                   (18 25)

(1,2)(5,6)(8,10,12)    (14,16)(19,21)(26,27,32,36)

但是,上面是无效的b树,因为94大于14。

什么是Java中穿越树的最佳方式,以便我可以找出节点是否处于正确的顺序?基本上我想编写一个函数,可以告诉我树是否是一个有效的b树。

更新:节点的结构如下所示:

class Node {
    List<Integer> keys;
    List<Node> children;
}

2 个答案:

答案 0 :(得分:0)

只需使用有序遍历并确保已排序。如果这是完整性检查,那么您还应该确认所有孩子都有相同的身高,每个节点至少有一半。

答案 1 :(得分:0)

您可以执行inorder遍历并确保遍历中的当前元素至少大于前一个元素。

同样关于你的黄金法则,有几位作者写过,左边的键应该小于 或等于,右边的键可以大于 或等于