请问c语言中序遍历里面递归调用怎么调的最后能说一下运行。为什么p指向LChild就遍历所有左了

如题所述

typedef treeStruct T;

DataType findData(T* node)
{
if(node==NUll) return;

findData(node->Lchild); //1

printf(“%DataType”,node->Data); //2

findData(node->Rchild); //3

}
看上面的,因为遍历函数自身迭代调用自己,只要node!=NUll,那么1会执行那么进入下一级,下一级会同样的这样判断,一直下去,直到左边完毕输出Data,再右边,迭代类似树,迭代调用执行的时候向下,返回的时候向上‘追问

1是一直执行到最左才会打出一个data然后历遍到最右然后怎么执行呢
这样也只是打出最左边那个data额

我就是疑问这里1是不是要递归到最后才执行下一步

追答

对,需要执行到叶结点,叶结点再向左的遍历的话遇上if(node==NUll) return;那么执行printf,。。。
你的理解是正确的

追问

这里return请问那个指针也跳回跟节点吗

追答

1:根节点
2:二级根节点
3:三级根节点
4:四级根节点 ........
假如这棵树深度为4,那么在向左遍历是从1->2->3->4,当4再左边遍历时,为NULL,那么执行输出Data,这里的Data为4级节点的值。
大体的Data输出顺序为4->3->2->1
。。

追问

这是中序的遍历如果是先序或者后序呢是变printf的地方么

追答

对就是这样的,理解还挺快。。。

追问

我笨着呢,是你讲的明白。谢谢啦!我去睡觉啦晚安

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答