Java 使用递归的顺序遍历BST到底是如何工作的?

Java 使用递归的顺序遍历BST到底是如何工作的?,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,我理解BST的顺序遍历的概念,但我对它的递归工作原理感到困惑。我不知道如何运行print语句和以root.right作为参数的递归调用。我注意到inOder(root.left)将不断被调用以搜索BST中的最低值,但当它达到null时,if语句将不可访问,因此我们无法跳回右侧节点。我只是想知道我们如何才能在if语句中达到代码的底线 public void inOrder(TreeNode root) { if(root != null) { inOrder(root.l

我理解BST的顺序遍历的概念,但我对它的递归工作原理感到困惑。我不知道如何运行print语句和以root.right作为参数的递归调用。我注意到inOder(root.left)将不断被调用以搜索BST中的最低值,但当它达到null时,if语句将不可访问,因此我们无法跳回右侧节点。我只是想知道我们如何才能在if语句中达到代码的底线

public void inOrder(TreeNode root) { 
    if(root != null) { 
       inOrder(root.left); 
       System.out.printf("%d ",root.data); 
       inOrder(root.right); 
    } 
}

理解递归堆栈很重要。从左边一直到内存中都存储有单独的方法调用。仅当要求左停止时才开始打印。它首先打印左子对象,然后打印父对象,然后从左下角开始打印右子对象