二叉树的前序、中序、后序遍历
参考了这篇文章:https://www.jianshu.com/p/456af5480cee
概念
前序:
考查到一个节点后,即刻输出该节点的值(访问该节点),并继续遍历其左右子树。(根-左子树-右子树)。
中序:
考查到一个节点后,将其暂存,遍历完左子树后,再输出该节点的值(访问该节点),然后遍历右子树。(左子树-根-右子树)
后序:
考查到一个节点后,将其暂存,遍历完左右子树后,再输出该节点的值(访问该节点)。(左子树-右子树-根)
注意
3种遍历的概念,可以简要概括为:
前序:根-左子树-右子树
中序:左子树-根-右子树
后序:左子树-右子树-根
在有些参考资料里,把左右子树偷换概念为左右节点,比如前序:根-左节点-右节点,这是不正确的表达与理解,千万不要这样记!!!
访问和考查的区别:
考查一个节点,跟访问节点是不一样的,考查到一个节点,但不一定会访问它。
编程实现时,考查指的是:有一个变量专门存放当前节点,即考查到当前节点,访问指的是:从当前节点里拿出它的值。
遍历是什么意思:
所谓遍历若干个节点,指的是按照某种顺序访问完这若干个节点。
考查的起点:
只能从二叉树的根节点开始考查。如果用指针的概念来理解,指针都是从父节点指向子节点的,整棵树的指针都是往下指的,给出子节点,是找不到其父节点的。
人工得出遍历顺序
前序(根-左子树-右子树)
从根节点1开始考查,访问根节点1,输出1。
遍历根节点1的左子树,对于左子树来说,根节点为2,访问节点2,输出2。
遍历节点2的左子树,其根节点为4,访问节点4,输出4。
该遍历节点4的左子树了,但它没有左子树,故遍历其右子树,右子树的根节点为6,访问节点6,输出6,然后遍历其左子树(只有一个节点),输出7,然后遍历其右子树(只有一个节点),输出8。
回过头看根节点1,自身已经被访问了,其左子树也被访问完了,该遍历其右子树了,右子树的根节点为3,访问节点3,输出3,节点3没有左子树,只有右子树,遍历其右子树(只有一个节点),输出5。
访问顺序:12467835
中序(左子树-根-右子树)
从根节点1开始考查,先遍历其左子树,左子树的根节点为2,先遍历其左子树,左子树的根节点为4,先遍历其左子树,但节点4没有左子树,就访问节点4,输出4,然后遍历其右子树,右子树的根节点为6,遍历其左子树,输出7,访问根节点6,输出6,遍历其右子树,输出8。
回过头看节点2,其左子树已经访问完了,访问节点2,输出2,节点2没有右子树就不管了。
回过头看节点1,其左子树已经访问完了,访问节点1,输出1,该访问节点1的右子树了,右子树的根节点为3,节点3没有左子树,那就访问节点3,输出3,然后访问右子树,输出5。
访问顺序:47682135
后序(左子树-右子树-根)
从根节点1开始考查,先遍历其左子树,左子树的根节点为2,先遍历其左子树,左子树的根节点为4,先遍历其左子树,但它没有左子树,于是遍历其右子树,右子树根节点为6,先遍历其左子树,输出7,再遍历其右子树,输出8,然后访

本文详细介绍了二叉树的前序、中序、后序遍历概念,通过实例解析了遍历过程,并探讨了编程实现遍历的方法。前序遍历顺序为:根-左子树-右子树;中序遍历顺序为:左子树-根-右子树;后序遍历顺序为:左子树-右子树-根。
最低0.47元/天 解锁文章
435

被折叠的 条评论
为什么被折叠?



