数据结构——树、森林、二叉树的转换
树、森林与二叉树的转换
树转换二叉树
规则:左孩子右兄弟,每个结点左指针指向它的第一个孩子结点,右指针指向它在树中相邻兄弟结点。
二叉树转换为树
规则: 逆过程,将指针修改回来,指向其双亲结点。
森林转换二叉树
二叉树转换森林是唯一的
规则:将每一棵树转换为二叉树,将每棵二叉树的根依次作为上一棵二叉树的右子树。
二叉树转换森林
规则:逆过程,先找到每一棵树,拆解。
树、森林的遍历
树的遍历
规则:按照某种方式访问树中的每个结点,且仅访问依次。
先根遍历:若树非空,则先访问根结点,再按从左往右的顺序遍历根结点的每个子树,即:R、A、D、E、B、C、F、G、H、K——与二叉树先序遍历序列相同。
树的先根遍历序列与这棵树对应的二叉树先序遍历序列相同
后根遍历:若树非空,则先按从左往右的顺序遍历根结点的每棵子树,再访问根结点,即:D、E、A、B、G、H、K、F、C、R——与二叉树中序遍历序列相同。
树的后根遍历序列与这棵树对应的二叉树中序遍历序列相同
层次遍历:
森林的遍历
先序遍历
若森林非空,则
- 访问森林中第一棵树的根结点
- 先序遍历第一棵树的子树森林
- 先序遍历除去第一棵树之后剩余的树构成的子树森林
中序遍历
若森林非空,则
- 中序遍历第一棵树的根结点的子树森林
- 访问森林中第一棵树的根结点
- 中序遍历除去第一棵树之后剩余的树构成的子树森林
例子
先序遍历:A、D、E、B、C、F、G、H、K
森林的先序遍历序列与森林对应的二叉树先序遍历序列相同
中序遍历:D、E、A、B、G、H、K、F、C
森林的中序遍历序列与森林对应的二叉树先中序历序列相同
对应关系
树 | 森林 | 二叉树 |
---|---|---|
先根遍历 | 先序遍历 | 先序遍历 |
后根遍历 | 中序遍历 | 中序遍历 |
数据结构——树、森林、二叉树的转换相关推荐
- 数据结构-树,二叉树,森林
树,二叉树,森林 王卓老师的数据结构课程笔记 树和二叉树 定义 结点之间有分支,具有层次关系 是n个结点的有限集. 若n = 0,称为空树: 若n > 0,则它满足如下两个条件: 有且仅有一个特 ...
- C语言 数据结构 树和二叉树
树 1.树:是n节点的有限集.树是n(n=>0)个节点的有限集. n=0时成为空树. 在任意一颗非空树中:(1)有且仅有一个称为根的节点:(2)当n>0时,其余节点可分为m(m>0) ...
- 数据结构-树与二叉树-思维导图+小结
数据结构-树与二叉树-思维导图 1 数据结构-第五章-树与二叉树-思维导图 2 思维导图-补充 3 小结 3.1 知识点小结 3.2 习题小结 1 数据结构-第五章-树与二叉树-思维导图 数据结构 ...
- 数据结构——树和二叉树章节思维导图
数据结构--树和二叉树章节思维导图
- 王道——数据结构——树与二叉树(3)
系列文章目录 其他章节相关文章 王道--数据结构--栈和队列(1) 本章节其他相关文章 王道--数据结构--树与二叉树(1) 王道--数据结构--树与二叉树(2) 王道--数据结构--树与二叉树(4) ...
- 树,森林,二叉树之间的转换
树.森林和二叉树的转换 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的 ...
- (王道408考研数据结构)第五章树-第三节4:树与二叉树的转换
文章目录 一:树.二叉树和森林的转换 (1)树转化为二叉树 (2)森林转化为二叉树 (3)二叉树转化为树 (4)二叉树转化为森林 二:树与森林的遍历 (1)树的遍历 (2)森林的遍历 一:树.二叉树和 ...
- 数据结构学习——树与二叉树的转换
由于树和二叉树都可以用二叉链表作存储结构,则以二叉链表作媒介可以导出树与二叉树之间的一个对应关系. 一.将树转换成二叉树 (1)加线:在兄弟之间加一连线 (2)抹线:对每个结点,除了左孩子之外,去除其 ...
- 数据结构—树与二叉树
总第119篇 前言 之前谈到的线性表.栈和队列都是一对一的数据结构,但是现实中也存在很多一对多的数据结构,这篇要写的就是一种一对多的数据结构---树.全文分为如下几部分: 树的一些基本概念 树的存储结 ...
- 数据结构--树和二叉树
文章目录 树和二叉树 树 1.树的定义 2.树的逻辑表示 3.树的基本术语: 4.树的性质 5.树的基本运算 二叉树 二叉树的存储结构 二叉树的遍历 树和二叉树 树 1.树的定义 2.树的逻辑表示 树 ...
最新文章
- 如何学习linux编程(转载)
- 图数据库之Pregel
- qgraphicsview 添加矩形框并拖动改变大小_如何用手机巧影软件为视频添加字幕
- mysql binary 查询_MYSQL的binary解决mysql数据大小写敏感问题 《转载》
- 怎么卡我的世界服务器物品,我的世界手机版卡BUG刷物品方法攻略
- 真假难辨,AI就能分得清?
- linux安装挂载samba,【Linux系列】Centos7安装Samba并将工作区挂载到win(八)
- 人群与网络:关系的平衡
- mssql 动态行转列。
- SEO内容为王之如何创造伪原创
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系[转]
- IOS开发—系统定位
- php7 opcache 编译,PHP7中用opcache.file_cache导出脚本opcode实现源代码保护
- 提高睡眠质量的东西,每天晚上睡不着的你一定要试试
- android qq授权管理软件,android QQ第三方授权登录接入流程
- 基于自适应调整权重和搜索策略的鲸鱼优化算法
- 【739】单调栈应用
- 100天精通Python丨办公效率篇 —— 14、Python这些小技巧,让文件管理更加智能
- 台式计算机硬盘,台式机硬盘排行 强力推荐两款
- HTML5游戏 围住神经猫 开发
热门文章
- Keil4的下载程序后窗口闪退,程序保存失败
- n阶台阶 java_上N阶楼梯,一次走1个台阶或者2个台阶,共有多少种走法?
- APP获取气象局所有城市气象预警信息接口
- 模拟电路设计中输入电阻、输出电阻的选择
- CSS3新增的相关属性
- Boost::Asio::Error的用法浅析
- 论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突
- C语言第6章问题答案,C语言答案第6章.doc
- C++ 科学计数法和精度问题
- python2和python3实现在图片上加汉字