树、森林与二叉树的转换

树转换二叉树

规则:左孩子右兄弟,每个结点左指针指向它的第一个孩子结点,右指针指向它在树中相邻兄弟结点。


二叉树转换为树

规则: 逆过程,将指针修改回来,指向其双亲结点。

森林转换二叉树

二叉树转换森林是唯一的

规则:将每一棵树转换为二叉树,将每棵二叉树的根依次作为上一棵二叉树的右子树。


二叉树转换森林

规则:逆过程,先找到每一棵树,拆解。

树、森林的遍历

树的遍历

规则:按照某种方式访问树中的每个结点,且仅访问依次。

先根遍历:若树非空,则先访问根结点,再按从左往右的顺序遍历根结点的每个子树,即: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

森林的中序遍历序列与森林对应的二叉树先中序历序列相同

对应关系

森林 二叉树
先根遍历 先序遍历 先序遍历
后根遍历 中序遍历 中序遍历

数据结构——树、森林、二叉树的转换相关推荐

  1. 数据结构-树,二叉树,森林

    树,二叉树,森林 王卓老师的数据结构课程笔记 树和二叉树 定义 结点之间有分支,具有层次关系 是n个结点的有限集. 若n = 0,称为空树: 若n > 0,则它满足如下两个条件: 有且仅有一个特 ...

  2. C语言 数据结构 树和二叉树

    树 1.树:是n节点的有限集.树是n(n=>0)个节点的有限集. n=0时成为空树. 在任意一颗非空树中:(1)有且仅有一个称为根的节点:(2)当n>0时,其余节点可分为m(m>0) ...

  3. 数据结构-树与二叉树-思维导图+小结

    数据结构-树与二叉树-思维导图 1 数据结构-第五章-树与二叉树-思维导图 2 思维导图-补充 3 小结 3.1 知识点小结 3.2 习题小结 1 数据结构-第五章-树与二叉树-思维导图   数据结构 ...

  4. 数据结构——树和二叉树章节思维导图

    数据结构--树和二叉树章节思维导图

  5. 王道——数据结构——树与二叉树(3)

    系列文章目录 其他章节相关文章 王道--数据结构--栈和队列(1) 本章节其他相关文章 王道--数据结构--树与二叉树(1) 王道--数据结构--树与二叉树(2) 王道--数据结构--树与二叉树(4) ...

  6. 树,森林,二叉树之间的转换

    树.森林和二叉树的转换 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的 ...

  7. (王道408考研数据结构)第五章树-第三节4:树与二叉树的转换

    文章目录 一:树.二叉树和森林的转换 (1)树转化为二叉树 (2)森林转化为二叉树 (3)二叉树转化为树 (4)二叉树转化为森林 二:树与森林的遍历 (1)树的遍历 (2)森林的遍历 一:树.二叉树和 ...

  8. 数据结构学习——树与二叉树的转换

    由于树和二叉树都可以用二叉链表作存储结构,则以二叉链表作媒介可以导出树与二叉树之间的一个对应关系. 一.将树转换成二叉树 (1)加线:在兄弟之间加一连线 (2)抹线:对每个结点,除了左孩子之外,去除其 ...

  9. 数据结构—树与二叉树

    总第119篇 前言 之前谈到的线性表.栈和队列都是一对一的数据结构,但是现实中也存在很多一对多的数据结构,这篇要写的就是一种一对多的数据结构---树.全文分为如下几部分: 树的一些基本概念 树的存储结 ...

  10. 数据结构--树和二叉树

    文章目录 树和二叉树 树 1.树的定义 2.树的逻辑表示 3.树的基本术语: 4.树的性质 5.树的基本运算 二叉树 二叉树的存储结构 二叉树的遍历 树和二叉树 树 1.树的定义 2.树的逻辑表示 树 ...

最新文章

  1. 如何学习linux编程(转载)
  2. 图数据库之Pregel
  3. qgraphicsview 添加矩形框并拖动改变大小_如何用手机巧影软件为视频添加字幕
  4. mysql binary 查询_MYSQL的binary解决mysql数据大小写敏感问题 《转载》
  5. 怎么卡我的世界服务器物品,我的世界手机版卡BUG刷物品方法攻略
  6. 真假难辨,AI就能分得清?
  7. linux安装挂载samba,【Linux系列】Centos7安装Samba并将工作区挂载到win(八)
  8. 人群与网络:关系的平衡
  9. mssql 动态行转列。
  10. SEO内容为王之如何创造伪原创
  11. ASCII、Unicode、GBK和UTF-8字符编码的区别联系[转]
  12. IOS开发—系统定位
  13. php7 opcache 编译,PHP7中用opcache.file_cache导出脚本opcode实现源代码保护
  14. 提高睡眠质量的东西,每天晚上睡不着的你一定要试试
  15. android qq授权管理软件,android QQ第三方授权登录接入流程
  16. 基于自适应调整权重和搜索策略的鲸鱼优化算法
  17. 【739】单调栈应用
  18. 100天精通Python丨办公效率篇 —— 14、Python这些小技巧,让文件管理更加智能
  19. 台式计算机硬盘,台式机硬盘排行 强力推荐两款
  20. HTML5游戏 围住神经猫 开发

热门文章

  1. Keil4的下载程序后窗口闪退,程序保存失败
  2. n阶台阶 java_上N阶楼梯,一次走1个台阶或者2个台阶,共有多少种走法?
  3. APP获取气象局所有城市气象预警信息接口
  4. 模拟电路设计中输入电阻、输出电阻的选择
  5. CSS3新增的相关属性
  6. Boost::Asio::Error的用法浅析
  7. 论API hook——说360安全浏览器、金山网盾、瑞星、卡巴斯基、傲游浏览器等软件会互相冲突
  8. C语言第6章问题答案,C语言答案第6章.doc
  9. C++ 科学计数法和精度问题
  10. python2和python3实现在图片上加汉字