算法通过村第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]

第二步:

继续找下层子树根结点:[ 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

第三步:

继续找下层子树根结点:[ 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

依次类推最后得出图示:

相关推荐
老前端的功夫1 小时前
Vue2中key的深度解析:Diff算法的性能优化之道
前端·javascript·vue.js·算法·性能优化
yongui478341 小时前
基于深度随机森林(Deep Forest)的分类算法实现
算法·随机森林·分类
是苏浙2 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——点名
数据结构·算法·leetcode·c/c++
迷途之人不知返3 小时前
数据结构之,栈与队列
数据结构
MATLAB代码顾问3 小时前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
高山上有一只小老虎4 小时前
字符串字符匹配
java·算法
愚润求学5 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划
MOONICK5 小时前
数据结构——哈希表
数据结构·哈希算法·散列表
林太白5 小时前
跟着TRAE SOLO学习两大搜索
前端·算法