已知一棵树的先根序遍历序列为ABEFJCDGHKLI,后根序遍历序列为EJFBCGKLHIDA。求: (1)画出该树的树状逻辑结构图 (2)求结点D的度和该树的度 (3)画出由该树变换而来的二叉树
时间: 2024-10-29 10:17:03 浏览: 43
C++实现二叉树遍历序列的求解方法
(1)根据先根遍历序列(A-B-E-F-J-C-D-G-H-K-L-I),可以推断出根节点为A,因为它是序列的第一个元素。接下来通过后根遍历的顺序重建树形结构,后根遍历相当于从叶子节点开始,逆序到达根节点。所以我们可以逐步构建树:
```
A
/ \
B E
/ \ / \
J F C G
/ \ \
K L H I
```
(2)结点D出现在先根遍历的序列中,说明它是一个内部节点,其子节点有C、G,因此度( Degree)为2。整个树的度是指所有节点的最大度数,对于这个例子,最大度是4(例如节点B、E、G等都有4个直接子节点),所以这棵树的度也是4。
(3)将树转换成二叉树,我们需要保持每一步插入的两个子节点相对位置不变。根据给定的后根遍历,我们首先找到最后一个字符I,然后将其作为根节点,再根据它的前一个字符H确定左子树,H的前一个字符G确定右子树,以此类推:
```
I
/ \
H D
/ \ / \
G L C
/ \
K B
/ \
J E
```
这就是由原树变换得到的二叉树结构。
阅读全文