二叉树前序、中序、后序遍历相互求法
二叉树的三种遍历方法:
前序遍历:
1.访问根节点
2.前序遍历左子树
3.前序遍历右子树
中序遍历:
1.中序遍历左子树
2.访问根节点
3.中序遍历右子树
后序遍历:
1.后序遍历左子树
2.后序遍历右子树
3.访问根节点
三种方法的特点:
前序:开头是头结点,第一个节点肯定是根节点
中序:可以根据头结点划分左右子树的元素
后序:末尾是头结点,最后一个节点肯定是根节点
举例1,前中求后
前序遍历: GDAFEMHZ
中序遍历: ADEFGHMZ
求后序遍历。
前序可以得出 G为根节点。
带入中序中,ADEFG 为左边, HMZ为右边。
对应到两个子树的前序和中序。
左边前序:DAFE
左边中序:ADEF
右边前序:MHZ
右边中序:HMZ
推出:
左根节点D
右根节点M
以此类推,推导即可。
举例2,中后求前
中序遍历: ADEFGHMZ
后序遍历: AEFDHZMG
有后序,可以直接看出来G为根节点。
左边中序为ADEF
左边后序为AEFD
右边中序HMZ
右边后序HZM
推出左边根为D,右边根为M。
以此类推,推导即可。
举例3,前后求中
前序遍历: GDAFEMHZ
后序遍历: AEFDHZMG
可以得出根节点,但是无法确定左右子树,得到的解不唯一。