我通常尝试遵循树遍历递归,所以这不是特定于有序遍历的,但是我将针对此问题使用有序遍历代码:
void inOrderTraversal(BinNode root)
{ if (root != null) {
System.out.println("left: "+root.value);
inOrderTraversal(root.left);
System.out.println(root.value);
System.out.print("left is empty: ");
System.out.println(root.left ==null);
System.out.print("right is empty: ");
System.out.println(root.right ==null);
inOrderTraversal(root.right);
}
}
使用的输入数据如下:
5
/ \
4 5
/ \ \
4 4 5
here提供了代码输出。
在附加的输出文件中,在输出的第四行(该节点被访问),代码位于左侧子树的末尾。下一个递归调用在子树的右边,为null。但是在第8行和第9行的输出中,代码以某种方式返回到树的第2级,左,右节点返回的值都不为空。
当没有对先前节点的引用或指针时(例如在链表中),递归如何回到树上?