最近在北京去一家做C开发的公司笔试,考查了二叉树的三种遍历:前序(先序、先根)、中序(中根)、后序(后根)
题目如下:
二叉树的前序遍历输出:ABDHEICFJK
中序遍历输出:DHBEIACJFK
画出此二叉树并写出后序遍历输出
推导过程如下:1.由前序输出知道树根为A, 再由中序知道A的左边为DHBEI,右边为CJFK
2.由前序遍历知B为左子树根节点,再由中序知道B的左边为DH,右边为EI
3.由前序遍历知D为左子树根节点,再由中序遍历知D没有左子树,右子树为H
4.由前序遍历知E为右子树根节点,再由中序遍历知E没有左子树,右子树为I
A的右子树依此论推,可得到二叉树如下图:
A
B C
D E F
H I J K
后序遍历输出:HDIEBJKFCA
另外由后序遍历和中序遍历,求出前序遍历思路类似,先后序输出最后为树根,再中序,按此顺序递归即可!
注意:已知前序和后序求中序结果不唯一