二叉树前序、中序、后序遍历相互求法
今天在刷题目的时候,遇到了一个二叉树遍历的问题 以前上课的时候数据结构老师讲过 现在回忆起来还是记不太清了 后面网上参考资料
整理如下:
前序、中序、后序遍历的特性如下:
前(先)序遍历:
1.访问根节点
2.前序遍历左子树
3.前序遍历右子树
中序遍历:
1.中序遍历左子树
2.访问根节点
3.中序遍历右子树
后序遍历:
1.后序遍历左子树
2.后序遍历右子树
3.访问根节点
总结了一个口诀:
先序:根--左--右
中序:左--根--右
后序:左--右--根
二、已知中序和后序遍历,求前序遍历
中序遍历: ADEFGHMZ
后序遍历: AEFDHZMG
画树求法:
第一步,根据后序遍历的特点,我们知道后序遍历最后一个结点即为根结点,即根结点为G。
第二步,观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。
第三步,观察左子树ADEF,左子树的中的根节点必然是大树的root的leftchild。在前序遍历中,大树的root的leftchild位于root之后,所以左子树的根节点为D。
第四步,同样的道理,