【发布时间】:2017-10-24 07:53:24
【问题描述】:
我正在为数据结构类研究一棵红黑树。
我有代码:
void printInorder(Node node) //Input is initially the root node
{
if (node == null)
{
return;
}
printInorder(node.left);
System.out.println(node.data);
printInorder(node.right);
}
我们以这个二叉树为例:
50
/ \
40 60
/ \ \
20 45 70
/ \ /
43 47 65
代码的输出是正确的,是:20 40 43 45 47 50 60 65 70
我对代码的理解是,它会递归调用 printInorder(node.left) 直到达到 20。
此时,它将打印“20”,然后检查 printInorder(node.right),发现它为空并返回到 printInorder(node.right) 语句,此时它位于方法的底部并且没有更多的代码可以运行,所以它退出了。
输出是正确的,但根据我对代码的理解,它应该在打印“20”后停止。
有人可以为我一步一步地解释这个递归循环的过程吗?请假装你正在向有精神障碍的人解释它。谢谢。
【问题讨论】:
标签: java recursion binary-search-tree