树与二叉树之间的相互转换、树的遍历
树与二叉树的转换、树的遍历
树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树。
在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左孩子结点指针,右兄弟结点指针是二叉树中右孩子结点指针。
树转换为二叉树过程:
(1)树中所有相同双亲结点的兄弟结点之间加一条连线;
(2)对树中不是双亲结点的第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线;
(3)整理所有保留的连线,根据连线摆放成二叉树的结构,转换完成。
二叉树还原为树过程:
(1)若某结点是其双亲结点的左孩子,则把该结点的右孩子,右孩子的右孩子······都与该结点的双亲结点用线连起来;
(2)删除原二叉树中所有双亲结点与右孩子结点的连线;
(3)整理所有保留的连线,根据连线摆放成树的结构,转换完成。
树的遍历:
主要有先根遍历和后根遍历两种,先根遍历序列一定和该树转换的二叉树的前序遍历序列相同;后根遍历序列一定和该树转换的二叉树的中序遍历序列相同。
先根遍历过程:
(1)访问根结点;
(2)按照从左到右的次序先根遍历根结点的每一棵树。
后根遍历过程:
(1)按照从左到右的次序后根遍历根结点的每一棵子树;
(2)访问根结点。
图中先根遍历序列为:ABEJFCGKLDHI 后根遍历序列为:JEFBKLGCHIDA
树与二叉树之间的相互转换、树的遍历相关推荐
- 广义表与二叉树之间的相互转换
广义表与二叉树之间的相互转换 二叉树是树形结构中一种特殊的树,其特点是每个结点最多只有两个孩子结点.二叉树除了可以通过典型的树状图来表示外,还可以使用广义表进行表示,例如:A(B,C)表示根结点A的左 ...
- 树、二叉树、AVL树,B树基础学习
树.二叉树.AVL树,B树基础学习 一.树的基本概念 树是一种数据结构,它是由n(n>1)个有限节点组成的一个具有层次关系的集合. 树的基本概念 1.双亲:若有一个结点有子树,那么该结点就称为子 ...
- Python数据结构与算法笔记(八):数据结构——树,二叉树和AVL树
树 class Node:def __init__(self, name, type='dir'):self.name = nameself.type = type #"dir" ...
- (三叉字典树)二叉树套字典树
看了道题,是要写个字典树排序的,但又不局限于二十六个字母,于是来了个三叉字典树(二叉树套字典树).最差时间复杂度是trie树的常数倍,空间比trie树省得多了. #include<cstdio& ...
- [数据结构]树、森林与二叉树之间的相互转换方法
树.二叉树与森林的相互转换 本文只给出树.森林与二叉树之间的转换方法,而详细的证明过程不在本文讨论范围之内. 树 → 二叉树 在所有兄弟结点之间加一连线. 对每个结点,除了保留与其长子的连线外,去掉该 ...
- 树,森林,二叉树之间的转换
树.森林和二叉树的转换 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的 ...
- 树以及二叉树的常用性质以及遍历
度 一个节点有几个度,就是看这个节点有几个分支,如A节点的度为2,B节点的度为1,而D节点的度为3. 树的度 树的度为这个树所有有最大的度的那个节点的度,例如在上图中,树的度为3(取决于D节点的度). ...
- python数据结构树和二叉树,python数据结构树和二叉树简介
一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树. 树的递归定义: 树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树 ...
- 树与二叉树 | 实验3:由遍历序列构造二叉树
实验3:由遍历序列构造二叉树 二叉树构造定理: 定理7.1:任何n(n>0)个不同结点的二又树,都可由它的中序序列和先序序列唯一地确定. 定理7.2:任何n(n>0)个不同结点的二又树,都 ...
最新文章
- 服务器跑python程序_远程编写+调试服务器上的Python程序
- Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争...
- 好好学python·运算符和流程控制
- MySQL条件查询介绍
- C#连接MySQL数据库实例
- 浅谈工业无线遥控器的基本定义及原理
- C++ opengl 绘制三角形带
- Linux下的wc命令
- QT解析嵌套JSON表达式
- Ansible详解(十四)——Ansible Role实战
- 【ArcGIS|空间分析】地形特征相关计算
- Linux下多线程查看工具(pstree、ps、pstack),linux命令之-pstree使用说明, linux 查看线程状态。 不指定...
- C语言 素数三种思路求解,C语言求素数
- 2021暑期实习:网易互娱游戏测试最新面经!
- html有哪些段落及排版标记,04.HTML排版标记
- numpy.take()用法总结
- 硬盘SMART检测参数详解[转]
- EDG获得S11冠军
- 美女图片采集器 源码+解析
- 频率单位转换 hz cpd cph