算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树

中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12

后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1

通过这两个遍历顺序恢复二叉树

首先我们知道中序遍历顺序左中右,后序遍历顺序左右中

第一步:

由后序遍历确定根结点为1 ==> 由中序遍历划分左右子树[3 4 8 6 7 5 2] 1 [10 9 11 15 13 14 12]

算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树_第1张图片

第二步:

继续找下层子树根结点:[ 8 7 6 5 4 3 2 ][10 15 14 13 12 11 9 ]1

左子树根结点为2,右子树根结点9,

划分中序:

[3 4 8 6 7 5 2] ==> [3 4 8 6 7 5] 2   

[10 9 11 15 13 14 12] ==> [10] 9 [11 15 13 14 12]

算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树_第2张图片

 

第三步:

继续找下层子树根结点:[ 8 7 6 5 4 3] 2 [10 15 14 13 12 11] 9 1

左子树根结点为3,右子树根结点11,

划分中序:

[3 4 8 6 7 5] ==> 3 [ 4 8 6 7 5]    

[ 11 15 13 14 12] ==> 11 [15 13 14 12]

算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树_第3张图片

依次类推最后得出图示:

算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树_第4张图片

 

你可能感兴趣的:(算法,算法,数据结构)