目录
一、二叉树的遍历有三种三种遍历方式:
1.前序遍历:根---->左---->右
2.中序遍历:左---->根---->右
3.后序遍历:左---->右---->根
例如:有一棵树如图所示:
前序遍历:A--->B--->C--->D--->E--->F--->G--->H--->K;
中序遍历:B--->D--->C--->A--->E--->H--->G--->K--->F;
后序遍历:D--->C--->B--->H--->K--->G--->F--->E--->A。
二、给定二叉树的先序和中序,写出二叉树的后序
思路:先还原出这棵二叉树。
假设,二叉树的先序遍历为:ABDFCEGH,中序遍历结构为:BFDAGEHC
第一步,看先序遍历,由遍历顺序得,A为这棵树的根节点;
第二步,然后,可以确定的是BFD为A的左子树,GEHC为A的右子树,接下来就看左子树和右子 树长什么样就行。
第三步,先看左子树,由先序遍历知,B为左子树的根节点。
再看中序遍历,B的左边没有字母而右边有,可以确定B只有右子树;
然后再看先序遍历,得D为B的右子树;
最后看中序遍历,D的右边是A而A已经被选择了,D的左边只有F,所以D只有左子 树,且左子树为F。
那么左子树就为:
第四步 ,由先序遍历知,C为A的右子树;
第五步, 先看中序遍历,C的右边没有字母,左边有,说明C只有左子树;
第六步,再看先序遍历,可知E为C的左子树;
第七步,最后看中序遍历,E的左边为G,右边为H,说明G为E的左子树,H为E的右子树。
那么最后整个树还原后应该是这样的:
后序遍历为:F--->D--->B--->G--->H--->E--->C--->A
三、给定二叉树的中序遍历和后序遍历,写出先序遍历
假设,二叉树的中序遍历为:DEBAC,后序遍历为:DABEC
第一步,先看后序遍历,可知C为这棵树的根节点;
第二步,再看中序遍历,可知这棵树只有左子树;
第三步,再看后序遍历,E在最后,则E为C的左子树;
第四步,然后看中序遍历,E的左边为D,E的右边为B,可以确定E的左子树为D,右子树为B;
第五步,最后看中序遍历,B的右边为A,则B的右子树为A。
最后这棵树还原后为:
先序遍历为:C--->E--->D--->B--->A