-3

I have a B-Tree with a traverse function I found on GeeksForGeeks that does standard inorder traversal. I tried to modify it to do reversed inorder traversal by changing the for loop but it does not seem to work. Any ideas?

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]);
        }
    }
Luka Jozić
  • 162
  • 2
  • 12

1 Answers1

0

I after some more debugging I figured out the problem. Here is the solution. Seems like my indices were off.

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]);
        }
    }
Luka Jozić
  • 162
  • 2
  • 12