什么是遍历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;
}
答案 0 :(得分:0)
只需使用有序遍历并确保已排序。如果这是完整性检查,那么您还应该确认所有孩子都有相同的身高,每个节点至少有一半。
答案 1 :(得分:0)
您可以执行inorder遍历并确保遍历中的当前元素至少大于前一个元素。
同样关于你的黄金法则,有几位作者写过,左边的键应该小于 或等于,右边的键可以大于 或等于。