二叉树的遍历分为“前序遍历”“中序遍历”“后序遍历”和“层序遍历”。
二叉树结构如下
一:前序遍历
前序遍历的顺序为‘根’‘左’‘右’
1.即先访问根节点,取得根节点值后,在访问左子树,,2.将左子树当成一颗独立的树,取根节点值,依次循环此操作,直到左子树为NULL,3.再访问最后取根的节点的右子树,将其当成一颗独立的树,再进行1, 2,3操作(依次进行),直到左右都为NULL,就返回根的上一个节点的右子树,循环操作,直到返回的右子树为最初根的右子树为止。
如图,先取 1 然后访问左子树取根2,因为2的左子树为空返回,访问2的右子树3,取根3,由图可知,2的左右都访问完了,继续1的遍历顺序,访问1右子树5,取根5,访问5的左子树4,取根4,4的左右为NULL返回,访问5的右为NULL,遍历结束
得到1->2->3->5->4
代码如下,当根不为空时进入递归,直到根为空返回
二:中序遍历
中序遍历的顺序为‘左’‘根’‘右’
如图,1的左为2,向2遍历,因为2的左为NULL返回,取根2,再向2的右3遍历,因为3的左为NULL返回,取3,向3右遍历为NULL,返回1,继续1的遍历顺序,左遍历完了,取根1,再向1的右5遍历,5向左4遍历,4的左为NULL返回,取4,向右为NULL,返回5,取根5,向右为NULL,遍历结束
得2->3->1->4->5
代码如下
三:后序遍历
中序遍历的顺序为‘左’‘右’‘根’
如图:1的左为2,向2遍历,2的左为NULL,向右3遍历,3的左右为NULL,取根3,返回2,2的左右遍历完了,取根2,1的左遍历完,向1的右5遍历,5向左为4,4的左右为NULL返回,取根4,5的左遍历完,向右为NULL;返回5,取根5,1的右遍历完,取根1.
最后得到3->2->4->5->1.
结语
牢记一点,每到一个新的节点,就重新进行一次遍历(并且取值只取根的值)。
如:进行前序遍历,访问最开始的根后,访问左,此时再将它当做根,访问左,直到左为空,再访问右,在依次向上进行之前未完成的遍历。(中序后序同理)
个人学完三种遍历的一点总结,如果言语有不当处,请大佬指正