Tag: inorder

理解递归中的堆栈展开(树遍历)

我正在编写一个遍历二叉搜索树的程序。这是我的代码: Main.java public class Main { public static void main(String[] args) { BinaryTree binaryTree = new BinaryTree(); binaryTree.add(50); binaryTree.add(40); binaryTree.add(39); binaryTree.add(42); binaryTree.add(41); binaryTree.add(43); binaryTree.add(55); binaryTree.add(65); binaryTree.add(60); binaryTree.inOrderTraversal(binaryTree.root); } } Node.java public class Node { int data; Node left; Node right; Node parent; public Node(int d) { data = d; left = null; right = null; […]

这个inorder遍历算法如何工作?

我没有太多的递归经验,所以我很难确定这个算法是如何工作的: public static void inorder(Node n) { if (n != null) { inorder(n.getLeft()); System.out.print(n.data + ” “); inorder(n.getRight()); } } 我知道它访问了树中每个节点的左右子节点,但我无法理解为什么它确实有效。