反向递归遍历 B-Tree
Reversed recursive traversal B-Tree
我在 GeeksForGeeks 上找到了一个带有遍历函数的 B 树,它执行标准的中序遍历。我试图通过更改 for 循环来修改它以进行反向中序遍历,但它似乎不起作用。有什么想法吗?
private void reversedInOrder(BTreeNode node) {
int i;
for (i = node.numNodes - 1; i >= 0; i--) {
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
System.out.println(node.keys[i].getRedId());
}
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
}
经过更多的调试,我发现了问题。这是解决方案。好像我的指数不对。
private void reversedInOrder(BTreeNode node) {
int i;
for (i = node.numNodes; i > 0; i--) {
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
if (node.keys[i - 1] != null) {
System.out.println(node.keys[i - 1].getName());
}
}
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
}
我在 GeeksForGeeks 上找到了一个带有遍历函数的 B 树,它执行标准的中序遍历。我试图通过更改 for 循环来修改它以进行反向中序遍历,但它似乎不起作用。有什么想法吗?
private void reversedInOrder(BTreeNode node) {
int i;
for (i = node.numNodes - 1; i >= 0; i--) {
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
System.out.println(node.keys[i].getRedId());
}
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
}
经过更多的调试,我发现了问题。这是解决方案。好像我的指数不对。
private void reversedInOrder(BTreeNode node) {
int i;
for (i = node.numNodes; i > 0; i--) {
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
if (node.keys[i - 1] != null) {
System.out.println(node.keys[i - 1].getName());
}
}
if (!node.isLeaf) {
reversedInOrder(node.children[i]);
}
}