Java 在下面的代码中,递归如何在二叉树遍历中工作

Java 在下面的代码中,递归如何在二叉树遍历中工作,java,jakarta-ee,Java,Jakarta Ee,请解释程序的流程,从printPreordernode.left行可以看出,树首先在树的左侧遍历。一旦左侧不再有节点,下一个调用将是printPreordernull。这将导致代码从printPreordernode.left返回 然后它将执行下一条语句,即printPreordernode.right。这意味着它将向右打印一个节点,假设该节点不是null,它将再次落入printproordernode.left并沿着路径继续,直到到达另一个“null” 按预定顺序打印始终首先打印最左侧的节点。

请解释程序的流程,从printPreordernode.left行可以看出,树首先在树的左侧遍历。一旦左侧不再有节点,下一个调用将是printPreordernull。这将导致代码从printPreordernode.left返回

然后它将执行下一条语句,即printPreordernode.right。这意味着它将向右打印一个节点,假设该节点不是null,它将再次落入printproordernode.left并沿着路径继续,直到到达另一个“null”

按预定顺序打印始终首先打印最左侧的节点。然后是相应的右节点

这张图片可能会帮助您更好地理解它,它取自lylib.com/books/2/264/1/html/2/images/fig21-11.jpg


您的调试器最适合帮助您完成此任务。请解释您不清楚的程序流程。方法调用不是不言自明的吗?创建一个具有不同值的测试示例,并使用调试器来了解发生了什么以及顺序。那么,我们应该解决您的家庭作业问题吗?@realponsign如果您认为自己是java领域的大人物……那么请不要这么认为。我有一个问题,因为我已经把问题贴在这里了,谢谢你清楚的解释。我非常感谢你。@PiyushMishra不客气!如果这个答案对你来说足够好,考虑接受它作为正确的答案:
void printPreorder(Node node)
{ 
    if (node == null) return; 
     System.out.print(node.key + " "); 
     printPreorder(node.left); 
     printPreorder(node.right);
}