有人可以解释中序树遍历的逻辑吗?
Can somebody explain the logic for inorder tree travesal?
我得到了以下代码的输出,但我没有得到确切的逻辑。
第 3 行(递归 fn 调用)会在到达叶节点时传递值 Null
,那么它如何打印数据部分
void Inorder(struct node *node)
{
if(node!=NULL)
{
Inorder(node->left);
printf("%d",node->data);
Inorder(node->right);
}
}
基本上,如果节点不为空,则每次递归调用都会继续。
因此,对叶节点的调用 node->left
不会继续,随着递归函数的展开,节点会在下一行打印出来。
干运行一个例子,自己验证一下。
我得到了以下代码的输出,但我没有得到确切的逻辑。
第 3 行(递归 fn 调用)会在到达叶节点时传递值 Null
,那么它如何打印数据部分
void Inorder(struct node *node)
{
if(node!=NULL)
{
Inorder(node->left);
printf("%d",node->data);
Inorder(node->right);
}
}
基本上,如果节点不为空,则每次递归调用都会继续。
因此,对叶节点的调用 node->left
不会继续,随着递归函数的展开,节点会在下一行打印出来。
干运行一个例子,自己验证一下。