二叉树前序中序后序
悬赏分:5 | 解决时间:2010-4-24 20:54 | 提问者:huangti27
关于二叉树中,对于前序、中序、后序三者中,知道知道两个,求另外的一个有什么方法? 比如题目:若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()?
最佳答案
对于例题的后序遍历的答案是,gdbehfca.
解答过程:
1)定义解释:树的遍历的三种情况,是根据左子树、右子树、根这3者的不同访问次序来定义的。根左右(根先访问),则为先序遍历;左根右,则为中序遍历;左右根,则为后序遍历。
2)已知先序和中序遍历结果,求树的结构和后序遍历结果:
先序遍历结果给我们带来的信息是,根在哪。
中序遍历结果给我们带来的信息是,左、右子树在哪。
所以树结构的还原过程是,根据先序找到一个根;然后根据这个根和中序遍历结果找到它的相应的左、右子树;依次往下。
对于例题而言:
先序遍历的第一个节点是a,则说明a是整棵树的根。然后在中序遍历结果中,由a断开,找到a的左子树和右子树,即dgb是a的左子树中的节点集合,echf是a的右子树集合。(dgb)a(echf)
然后开始递归求解:还原(dgb)和(echf)
(dgb)的先序遍历结果是:bdg(从题目中的先序遍历中,截取)
(dgb)的中序遍历结果是:dgb(从题目中的中序遍历中,截取)
所以b为根,(dg)为左子树,右子树为空。即(dgb)= (dg)b
同理:(echf)=(e)c(hf)
第3次递归:(dg)= d(g);(hf)= (h)f
最后得到的结果就是:
((d(g))b)a ((e)c((h)f))
(在这种表示中,括号的层数代表在树中的层数)
a
b c
d e f
g h
根据这个树,后序遍历为先左、右,最后根
先访问(dgb) (echf) 然后是a
(dgb)这棵树的后序遍历为gdb
(echf)这棵树的后序遍历为ehfc
所以最后结果为gdb ehfc a
分享到:
相关推荐
- **优点**:便于插入和删除操作,存储空间可不连续,元素存储顺序任意。 5. **树与二叉树**: - **结点度**:结点的后继数量称为结点的度,树的最大结点度称为树的度。 - **二叉树**:结点度仅限0、1、2。对于...
知识点3:线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续(V) 知识点4:二维数组是其数组元素为线性表的线性表(V) 知识点5:每种数据结构都应具备三种基本运算:插入、删除和搜索(X) ...
- 线性链表是线性表的链式存储形式,存储空间可不连续。 6. **栈与队列**: - 栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除。 - 队列是先进先出(FIFO)的数据结构,允许在队尾插入,在队头...
按 p46 录入 SqStack 类型定义和相关常量定义,注意常量定义后没有分号(课本上有错误),函数原型说明部分可不录入。 录入并调试p47 方法InitStack、GetTop、Push Pop 方法 编写方法输出栈中元素内容 调用方法,...
- 链式存储结构(链表):内存空间可不连续,插入和删除操作快,但访问速度慢。 4. 树与二叉树: - 树:非线性数据结构,每个节点有零个或多个子节点。 - 二叉树:每个节点最多有两个子节点,分为左子节点和右子...
- **链式存储**:元素存储位置可不连续。 - **有序线性表**:可以采用顺序存储或链式存储。 - **队列**:一种特殊线性表,遵循先进先出(FIFO)原则。 - **循环队列**:队列的顺序存储结构,队头指针和队尾指针共同...
链式存储如链表,元素间通过指针链接,位置可不连续。此外,还有哈希表和堆等结构,它们提供了高效的数据查找和操作。 算法是解决问题的具体步骤,例如排序算法(冒泡排序、快速排序、归并排序等)、搜索算法(二分...
对于算法设计、数据结构的理解和应用能力是考察的重点,同时,对于运算机基本操作和复杂度分析的掌握也是必不可少的。通过反复练习和理论学习,考生可以提高自己的综合能力,为考试做好充分准备。
- 线性链式存储:每个节点包含数据和指向下一个节点的指针,存储空间可连续也可不连续,插入和删除操作只需改变指针,不需移动元素。 - 顺序存储:所有元素连续存储,适用于数组和线性表,插入和删除可能需要移动...
非线性结构则不符合这些条件,如树和二叉树。线性表是由数据元素构成的序列,顺序存储结构中,元素按逻辑顺序连续存储,查找、插入和删除等操作有特定的实现方式。 线性链表是线性表的链式存储形式,节点包含数据域...
3、线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。( ) 4、二维数组是其数组元素为线性表的线性表。( ) 5、每种数据结构都应具备三种基本运算:插入、删除和搜索。( ) 6、数据结构概念包括...
- **有名管道(Named Pipe)**:同样是一种半双工通信方式,但它允许可不具有亲缘关系的进程间通信。 - **信号量(Semaphore)**:用于控制多个进程对共享资源的访问,避免资源的竞争条件。信号量通常用作锁机制,确保...
- 为了创建具有左右子树指针的二叉树结构,需要一个额外的指针域来保存当前节点,所以填`struct TREE *parent;`。 - 求1至100的和,for循环的条件应该是`i。 - 定义长度为10的字符串并初始化为"continue",使用`...
数据元素是数据的基本单位,是数据集合中的个体,它可能由一个或多个数据项组成,数据项则是不可分割的最小单位。数据对象是具有相同性质的数据元素集合,有时候也被称为属性。 数据结构则涉及数据元素间的关系,...
leetcode双人赛 algorithm On the way. Tips 首先确定数据结构 迭代着思考问题 边界测试 规律性题目按周期处理 ...给定矩阵,进行图的深度优先遍历时,可不使用visited二维数组记录已遍历的结果,可