1. 已知二叉树的后序遍历序列:F,G,D,B,H,E,C,A;中序遍历序列:B, F, D, G, A, E,H, C。 (1)试画出该二叉树,写出求解步骤; (2)试写出其前序遍历和层次遍历序列。
时间: 2024-10-10 09:02:54 浏览: 40
首先,根据给定的后序遍历和中序遍历序列,我们可以重建二叉树的结构。因为后序遍历是先根节点->左子树->右子树,而中序遍历是左子树->根节点->右子树,这两者结合可以确定每个节点的位置。
步骤如下:
1. 从后序遍历最后一个元素开始(A),它是根节点,放在最后。
2. 对于剩下的元素,找到中序遍历中第一个等于后序遍历当前元素的,这个位置就是当前元素在中序遍历中的父节点。例如,A在中序遍历中的位置之前有B、F、D、G,所以它有一个父节点是F。
3. 现在我们知道了F是A的父节点,在中序遍历中找到F的位置(位于B之后),将F作为新的根节点,并在F的右侧添加A。
4. 重复此过程,直到所有的节点都插入到树中。对于后序遍历中的D、H、E,它们在中序遍历的相对位置可以帮助我们确定它们的子节点。
二叉树结构应该是这样的:
```
F
/ \
B A
/ \ / \
D G H E
\
C
```
现在我们有了树的结构,可以依次计算前序遍历和层次遍历序列:
- 前序遍历:按照根节点 -> 左子树 -> 右子树的顺序,即 A -> B -> D -> G -> F -> H -> E -> C。
- 层次遍历(广度优先搜索,从上到下,从左到右):F -> B -> D -> G -> H -> A -> E -> C。
相关问题
已知二叉树的后序遍历序列:JGDHEBKLIFCA 中序遍历序列: DJGBEHACKILF 画出这棵二叉树的形态
根据已知的中序遍历序列和后序遍历序列,可以重构出这棵二叉树,具体过程如下:
1. 后序遍历序列的最后一个元素是根节点,即C是根节点。
2. 在中序遍历序列中找到根节点C的位置,C前面的是左子树节点,C后面的是右子树节点。
3. 在后序遍历序列中找到左子树的节点,即JGDHEBKLIF,这些节点是在C的左侧的。
4. 将JGDHEBKLIF拆分成两部分,前半部分JGDHEBK是左子树的后序遍历序列,后半部分LIF是右子树的后序遍历序列。
5. 对于左子树,其中序遍历序列为DJGBEHACK,再按照步骤1-4重构左子树;对于右子树,其中序遍历序列为ILF,重构右子树。
6. 将左右子树连到C上,得到完整的二叉树。
以下是重构后的二叉树形态:
```
C
/ \
/ \
/ \
/ \
J I
/ \ / \
G D L F
/ \ /
H E K
\
B
\
A
```
2.已知一棵二叉树的先序序列:A B DF CE G H 和中序序列:B F DA GEH C,(1)画出得到的二叉树;(2)写出此二叉树的后序遍历序列和层次遍历序列:(3)画出由此二叉树转化的森林。
(1) 得到的二叉树如下图所示:
```
A
/ \
B C
/ \ /
D F E
/ \
G H
```
(2) 后序遍历序列为:DFBHGECA;层次遍历序列为:A B C D F E G H。
(3) 由此二叉树转化的森林如下图所示:
```
A C
/ \ /
B D E
/ \
F G
/
H
```
阅读全文