中序遍历的操作过程为:
- 如果二叉树为空,什么也不做
- 中序遍历左子树
- 访问根结点
- 中序遍历右子树
代码
void foreach_in_tree(BiTree T){
if(T != NULL){
foreach_in_tree(T->lchild);
printf("%c",T->data);
foreach_in_tree(T->rchild);
}
}
还输入之前的二叉树:
ABD#G###CE##F##
和上一篇公用一个创建方法,然后运行后这里又遇到了问题:
我打印出的顺序和视频中的顺序不一致,视频中的顺序为:D G B A E C F
,而我的顺序为:B D G A C E F
,是谁在搞鬼呢?
仔细观察后,发现原来是我傻逼了。
foreach_in_tree
在函数内调用自身时写成了 foreach_tree
,跟视频的结果一致才是出了鬼哦。
改正后,顺序果然一致了。
毛毛糙糙的习惯真的害人不浅啊,大家不要像我一样粗心大意…
那么,这一篇就先到这里吧,中序的遍历其实也挺简单的,接下来再学习下后续遍历。