树、森林、以及二叉树之间的转化
目录
- 树、森林转化二叉树
- 树转二叉树
- 森林转二叉树
- 二叉树转化为树、森林
- 二叉树转化树
- 二叉树转化森林
树、森林转化二叉树
树转二叉树
分为三个步骤:
兄弟+横线
树中的每一个结点,如果该结点有兄弟结点,那么就在这几个兄弟结点之间进行连线。保存长子线
对于树中的每一个结点,如果其有多个子节点,保存其第一个子节点的连线,去除其他子节点的连线。调整位置
对每个结点调整一定的位置,使其符合二叉树的标准。
案例:
将上图中的树转化为二叉树
第一步:兄弟+横线
第二步:保留长子线
第三步:调整位置,横线变斜线
森林转二叉树
森林转二叉树分为三个步骤
将每课树转换成二叉树
将每课树的根结点连接起来
把每棵树的根当做兄弟结点处理,兄弟加横线旋转调整位置
案例:
将上述森林转化为二叉树
第一步:每课树都转化为二叉树
第二步:根节点横线连接
第三步:调整位置,横线变斜线
二叉树转化为树、森林
二叉树转化树
一般分三个步骤:
- 若某结点的左孩子结点存在,将左孩子结点的右孩子结点、右孩子结点的右孩子结点……都作为该结点的孩子结点,将该结点与这些右孩子结点用线连接起来;
- 删除原二叉树中所有结点与其右孩子结点的连线;
- 调整位置
二叉树转化森林
三步:
- 先把每个结点与右孩子结点的连线删除,得到分离的二叉树;
- 把分离后的每棵二叉树转换为树;
- 调整位置
注:
在考研试题当中,一般很少会单独考这个知识点,一般会将这个知识点与二叉树的前序、中序、后序遍历结合,与树和森林的先根、后根遍历相结合。
树、森林、以及二叉树之间的转化相关推荐
- [数据结构]树、森林与二叉树之间的相互转换方法
树.二叉树与森林的相互转换 本文只给出树.森林与二叉树之间的转换方法,而详细的证明过程不在本文讨论范围之内. 树 → 二叉树 在所有兄弟结点之间加一连线. 对每个结点,除了保留与其长子的连线外,去掉该 ...
- 树,森林与二叉树之间的转换
1.树转换为二叉树 由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号. 将树转换成二叉树的步骤是: (1)加线.就是在所有兄弟结点之间加一条连线: ...
- 数据结构——树、森林和二叉树之间的转换
摘自大佬博客http://www.cnblogs.com/zhuyf87/archive/2012/11/04/2753950.html 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. ( ...
- 树、森林和二叉树之间的转换
2019独角兽企业重金招聘Python工程师标准>>> 1.树转化为二叉树 2.森林转化为二叉树 3.二叉树转化为树 4.二叉树转化为森林 5.树和森林的遍历 转载于:https:/ ...
- 数据结构之树、森林、二叉树的转化
树.森林.二叉树的转化 树转化成二叉树: 二叉树转化成树: 森林转化成二叉树: 二叉树转化成森林: 树转化成二叉树: 转化规则: 转化前: 转化后: 即: 二叉树转化成树: 原理: 树转二叉树的逆过程 ...
- 《数据结构与算法》(十一)- 树、森林与二叉树的转换及哈夫曼树详解
目录 前言 1. 树.森林与二叉树之间的转换 1.1 树转换为二叉树 1.2. 森林转换为二叉树 1.3. 二叉树转换为树 1.4 二叉树转换为森林 1.5 树与森林的遍历 2. 哈夫曼树及其应用 2 ...
- 树、森林与二叉树的转换以及其应用
树.森林与二叉树的转换以及其应用 1.树.森林与二叉树的转换 1.1. 树转换成二叉树 1.2. 森林转换成二叉树 2. 树的存储结构 2.1. 双亲表示法 2.2. 孩子链表表示法 2.3. 孩子兄 ...
- 树和森林,各种树之间的转化
树: 树是n个结点的有限集.若n=0,称为空树: 若n>0:有且仅有一个特定的称为根的结点.其余结点可分为m(m>=0)个互不相交的有限集 森林: 是m(m>=0)课互不相交的树的集 ...
- 树,森林,二叉树之间的转换
树.森林和二叉树的转换 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的 ...
- 树,森林,二叉树的互相转换
树.森林到二叉树的转换 将树转换为二叉树 树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟.按照这种关系很自然地就将树转换成相应的二叉树: 在所有兄弟结点之间加一连线 对每个结点,除了保留 ...
最新文章
- 「NLP」 聊聊NLP中的attention机制
- chrome浏览器上传文件延迟_扫描识别工具Dynamic Web TWAIN使用教程:移动浏览器捕获(下)...
- 简单但经典的算法题:有效字母的异位词
- [Swift算法]巴比伦法(牛顿迭代法)求平方根
- go语言中使用递归函数实现文件目录的遍历
- boost::test模块类属性工具的单元测试
- VUE自学日志04-Data Property 和方法
- Bookmarklet
- 使用JVM钩子函数关闭资源
- Java之mybatis详解(非原创)
- 大学物理质点动力学思维导图_高中物理思维导图图解
- 见证“开放式多路供水”的技术难度应大于人类上天!
- 微信小程序项目实例——印记
- 联想硬盘保护系统 安装详解
- 在用mybatis时报错java.lang.AbstractMethodError: com.mysql.jdbc.ServerPreparedState
- CPC是什么意思和CPM、CPV有什么不同?
- 游戏浅谈1-传奇,跑跑卡丁车
- HTML实时获取当前时间
- 8、Oracle:group by用法
- 【自然语言处理-1】TF-IDF简单最实用的关键词提取技术
热门文章
- python如何识别文件中的空行?
- [论文笔记]QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION
- 不会真有人觉得聊天机器人难吧——开篇
- LeetCode刷题——343. 整数拆分
- 性能优化是数据库应用的核心问题
- Saas架构设计之离线应用
- 17.1加入主题模型的文本增强
- 笔记本电脑如何强制关机_Mac 如何强制关机?
- 最大连续子序列和问题python_面试题42:连续子数组的最大和 python
- SLAM会议笔记(四)Lego-LOAM