目录

  • 树、森林转化二叉树

    • 树转二叉树
    • 森林转二叉树
  • 二叉树转化为树、森林
    • 二叉树转化树
    • 二叉树转化森林

树、森林转化二叉树

树转二叉树

分为三个步骤:

  • 兄弟+横线
    树中的每一个结点,如果该结点有兄弟结点,那么就在这几个兄弟结点之间进行连线。

  • 保存长子线
    对于树中的每一个结点,如果其有多个子节点,保存其第一个子节点的连线,去除其他子节点的连线。

  • 调整位置
    对每个结点调整一定的位置,使其符合二叉树的标准。

案例:

将上图中的树转化为二叉树

第一步:兄弟+横线

第二步:保留长子线

第三步:调整位置,横线变斜线

森林转二叉树

森林转二叉树分为三个步骤

  • 将每课树转换成二叉树

  • 将每课树的根结点连接起来
    把每棵树的根当做兄弟结点处理,兄弟加横线

  • 旋转调整位置

    案例:

    将上述森林转化为二叉树

第一步:每课树都转化为二叉树

第二步:根节点横线连接

第三步:调整位置,横线变斜线

二叉树转化为树、森林

二叉树转化树

一般分三个步骤:

  • 若某结点的左孩子结点存在,将左孩子结点的右孩子结点、右孩子结点的右孩子结点……都作为该结点的孩子结点,将该结点与这些右孩子结点用线连接起来;
  • 删除原二叉树中所有结点与其右孩子结点的连线;
  • 调整位置

二叉树转化森林

三步:

  • 先把每个结点与右孩子结点的连线删除,得到分离的二叉树;
  • 把分离后的每棵二叉树转换为树;
  • 调整位置

注:在考研试题当中,一般很少会单独考这个知识点,一般会将这个知识点与二叉树的前序、中序、后序遍历结合,与树和森林的先根、后根遍历相结合。

树、森林、以及二叉树之间的转化相关推荐

  1. [数据结构]树、森林与二叉树之间的相互转换方法

    树.二叉树与森林的相互转换 本文只给出树.森林与二叉树之间的转换方法,而详细的证明过程不在本文讨论范围之内. 树 → 二叉树 在所有兄弟结点之间加一连线. 对每个结点,除了保留与其长子的连线外,去掉该 ...

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

    1.树转换为二叉树 由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号. 将树转换成二叉树的步骤是: (1)加线.就是在所有兄弟结点之间加一条连线: ...

  3. 数据结构——树、森林和二叉树之间的转换

    摘自大佬博客http://www.cnblogs.com/zhuyf87/archive/2012/11/04/2753950.html 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. ( ...

  4. 树、森林和二叉树之间的转换

    2019独角兽企业重金招聘Python工程师标准>>> 1.树转化为二叉树 2.森林转化为二叉树 3.二叉树转化为树 4.二叉树转化为森林 5.树和森林的遍历 转载于:https:/ ...

  5. 数据结构之树、森林、二叉树的转化

    树.森林.二叉树的转化 树转化成二叉树: 二叉树转化成树: 森林转化成二叉树: 二叉树转化成森林: 树转化成二叉树: 转化规则: 转化前: 转化后: 即: 二叉树转化成树: 原理: 树转二叉树的逆过程 ...

  6. 《数据结构与算法》(十一)- 树、森林与二叉树的转换及哈夫曼树详解

    目录 前言 1. 树.森林与二叉树之间的转换 1.1 树转换为二叉树 1.2. 森林转换为二叉树 1.3. 二叉树转换为树 1.4 二叉树转换为森林 1.5 树与森林的遍历 2. 哈夫曼树及其应用 2 ...

  7. 树、森林与二叉树的转换以及其应用

    树.森林与二叉树的转换以及其应用 1.树.森林与二叉树的转换 1.1. 树转换成二叉树 1.2. 森林转换成二叉树 2. 树的存储结构 2.1. 双亲表示法 2.2. 孩子链表表示法 2.3. 孩子兄 ...

  8. 树和森林,各种树之间的转化

    树: 树是n个结点的有限集.若n=0,称为空树: 若n>0:有且仅有一个特定的称为根的结点.其余结点可分为m(m>=0)个互不相交的有限集 森林: 是m(m>=0)课互不相交的树的集 ...

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

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

  10. 树,森林,二叉树的互相转换

    树.森林到二叉树的转换 将树转换为二叉树 树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟.按照这种关系很自然地就将树转换成相应的二叉树: 在所有兄弟结点之间加一连线 对每个结点,除了保留 ...

最新文章

  1. 「NLP」 聊聊NLP中的attention机制
  2. chrome浏览器上传文件延迟_扫描识别工具Dynamic Web TWAIN使用教程:移动浏览器捕获(下)...
  3. 简单但经典的算法题:有效字母的异位词
  4. [Swift算法]巴比伦法(牛顿迭代法)求平方根
  5. go语言中使用递归函数实现文件目录的遍历
  6. boost::test模块类属性工具的单元测试
  7. VUE自学日志04-Data Property 和方法
  8. Bookmarklet
  9. 使用JVM钩子函数关闭资源
  10. Java之mybatis详解(非原创)
  11. 大学物理质点动力学思维导图_高中物理思维导图图解
  12. 见证“开放式多路供水”的技术难度应大于人类上天!
  13. 微信小程序项目实例——印记
  14. 联想硬盘保护系统 安装详解
  15. 在用mybatis时报错java.lang.AbstractMethodError: com.mysql.jdbc.ServerPreparedState
  16. CPC是什么意思和CPM、CPV有什么不同?
  17. 游戏浅谈1-传奇,跑跑卡丁车
  18. HTML实时获取当前时间
  19. 8、Oracle:group by用法
  20. 【自然语言处理-1】TF-IDF简单最实用的关键词提取技术

热门文章

  1. python如何识别文件中的空行?
  2. [论文笔记]QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION
  3. 不会真有人觉得聊天机器人难吧——开篇
  4. LeetCode刷题——343. 整数拆分
  5. 性能优化是数据库应用的核心问题
  6. Saas架构设计之离线应用
  7. 17.1加入主题模型的文本增强
  8. 笔记本电脑如何强制关机_Mac 如何强制关机?
  9. 最大连续子序列和问题python_面试题42:连续子数组的最大和 python
  10. SLAM会议笔记(四)Lego-LOAM