(一):已知二叉树中序序列和后序序列,求先序序列
例:(白书P386第13题)二叉树中序序列为abcdefg,后序序列为bdcafge,求先序序列
1.找根结点:
后序序列顺序为左右头,它最后一个定为根结点,根结点就为后序序列的最后一个------e;
2.分左右孩子:
e为根结点,根据中序序列是左头右推出abcd是根结点的左孩子,fg为右孩子;
3.排左孩子:
中序序列为abcd,后序序列为bdca(递归到第一步)
(1):找分支结点:
后序序列最后一个为分支结点,分支结点为a;
(2):分左右孩子:
a为分支结点,根据中序序列是左头右推出没有左孩子,bcd为右孩子;
(3):排左孩子:
无;
(4):排右孩子:
(此处省略过程,还是递归)排序为b是c的左孩子,d是c的右孩子,c是a的右孩子;
4.排右孩子:
中序序列为fg,后序序列为fg(也是递归)
(1):找分支结点:
后序序列最后一个为分支结点,分支结点为g;
(2):分左右孩子:
g为分支节点,根据中序序列是左头右推出
f为左孩子,无右孩子;
(3):排左孩子:
f为g的左孩子;
(4):排右孩子:
无;
5.画二叉树:
e
/ \
a g
\ /
c f
/ \
b d
6.写先序序列:为eacbdgf。
(二):已知二叉树先序序列和中序序列,求后序序列
例:(白书P386第18题)二叉树先序序列为EFHIGJK,中序序列为HFIEJKG,求后序序列
1.找根结点:
先序序列顺序为头左右,它第一个定为根结点,根结点就为先序序列的第一个------E;
2.分左右孩子:
E为根结点,根据中序序列是左头右推出HFI是根结点的左孩子,JKG为右孩子;
3.排左孩子:
中序序列为HFI,先序序列为FHI(递归到第一步)
(1):找分支结点:
先序序列第一个为分支结点,分支结点为F;
(2):分左右孩子:
F为分支结点,根据中序序列是左头右推出H为左孩子,I为右孩子;
(3):排左孩子:
H是F的左孩子;
(4):排右孩子:
I是F的右孩子;
4.排右孩子:
中序序列为JKG,先序序列为GJK(也是递归)
(1):找分支结点:
先序序列第一个为分支结点,分支结点为G;
(2):分左右孩子:
G为分支节点,根据中序序列是左头右推出
JK为左孩子,无右孩子;
(3):排左孩子:
(此处省略过程,还是递归)K是J的右孩子,J是G的左孩子;
(4):排右孩子:
无;
5.画二叉树:
E
/ \
F G
/ \ /
H I J
\
K
6.写后序序列:为HIFKJGE。
整理人:某位不愿透露姓名的帅哥
时间:2016.5.20