怎么根据序列画二叉树(知道二叉树先序,中序,后序其中的两个顺序列,如何画出二叉树)

本文目录
知道二叉树先序,中序,后序其中的两个顺序列,如何画出二叉树
(1)由先序遍历序列和后序遍历序列不能唯一确定一棵二叉树。
(2)由先序遍历序列和中序遍历序列能够唯一确定一棵二叉树。
设先序序列为:a1,a2,……,an , 中序序列为:ap1,…,api, a1, …,apn 。则a1为根结点;ap1,…,api为左子树的中序序列,a2,…,ai-1为左子树的先序序列。
同样,也可确定右子树的中序和先序序列。 按照上面方法对左子树和右子树可确定各自的根。继续下去即构造出二叉树。
(3)由后序遍历序列和中序遍历序列能够唯一确定一棵二叉树。
设后序序列为:a2,……,an , a1; 中序序列为:ap1,…,api, a1, …,apn 。则 a1为根结点;ap1,…,api为左子树的中序序列,a2,…,ai-1为左子树的后序序列。
同样,也可确定右子树的中序和后序序列。按照上面方法对左子树和右子树可确定各自的根。继续下去即构造出二叉树。
请求根据二叉树的中序序列和后序序列或者根据先序和中序画出对应二叉树的解题方法
后序最后一个是a,所以a是先序的第一个得到:
先序序列
abc_ef__
中序序列
bde_ag_h
后序序列
_dc_gh_a
_____________(a)____________
____________/___\___________
________(bde_)_(g_h)________
先序的第二个元素是b,所以b是a的左子树根节点
由中序b在最前,知道其他元素都在b的右子树上
所以,后序序列为(de_)b(g_h)a,对比已有的后序序列_dc_gh_a
得后序序列为:edcbghfa,中序序列为:bdecagfh
先序序列
abc_ef__
中序序列
bdecagfh
后序序列
edcbghfa
所以,二叉树为:
_____________(a)_____________
____________/___\____________
__________(b)____(f)_________
___________\_____/_\_________
___________(c)_(g)_(h)_______
___________/_________________
_________(d)_________________
__________\__________________
__________(e)________________

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40






