首页 > 解决方案 > 反向递归遍历 B-Tree

问题描述

我有一个 B 树,它具有我在 GeeksForGeeks 上找到的执行标准中序遍历的遍历函数。我试图通过更改 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]);
        }
    }

标签: javab-tree

解决方案


经过更多的调试,我发现了问题所在。这是解决方案。好像我的索引关闭了。

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

推荐阅读