树、森林到二叉树的转换

将树转换为二叉树
树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就将树转换成相应的二叉树:

  • 在所有兄弟结点之间加一连线
  • 对每个结点,除了保留与其长子的连线外,去掉该结点与其他孩子的连线

下面(a)图所示的树可转换为©图所示的二叉树。

由于树根没有兄弟,故树转化为二叉树后,二叉树的根结点的右子树必为空。

将一个森林转换为二叉树

  • 将森林中的每棵树变为二叉树
  • 因为转换所得的二叉树的根节点的右子树均为空,故可将各二叉树的根节点视为兄弟从左至右连在一起,就形成了一棵二叉树

下图中,左边包含三棵树的森林可转换为右边的二叉树。

二叉树到树、森林的转换

把二叉树转换到树和森林的方式是:若结点x是双亲y的左孩子,则把x的右孩子,右孩子的右孩子,…,都与y用连线连起来,最后去掉所有双亲到右孩子的连线

下图的森林就是由例2中二叉树转换成的。

例题

将森林转换为对应的二叉树,若在二叉树中,结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是:
1.父子关系; 2. 兄弟关系; 3. u的父结点与v的父结点是兄弟关系A.只有2
B.1和2
C.1和3
D.1、2和3

B
解析:
1.父子关系成立

2.兄弟关系成立
3.u的父节点与v的父节点是兄弟关系不成立

  • 将森林转换为二叉树的第一步是将每棵树转变为二叉树:则第一步是在所有兄弟结点之间加一根线,第二步对每个结点,除保留与长子的连线,去掉该结点与其他孩子的连线;则若u父亲与v父亲是兄弟关系,必连线成为父子,由此u至多为v的父亲的兄弟

树,森林,二叉树的互相转换相关推荐

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

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

  2. 树 森林 二叉树 遍历

    所谓遍历(Traversal),是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问. 访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的值.更新节点的值等. 不同的遍历 ...

  3. 程序员基本功11树和二叉树

    你只管努力,其他的交给天意 1.树的概念和基本术语 树是一种非线性的数据结构,如果一组数组节点之间存在复杂的一对多关联时,程序可以考虑使用树来存储这组数据.Treemap本身就是一颗红黑树,红黑树又是 ...

  4. 数据结构复习(五)——树和二叉树

    一.二叉树 1. 二叉树的顺序存储 #include<stdio.h> #define MaxSize 10 struct TreeNode {ElemType value; //结点中的 ...

  5. 树和二叉树的知识点考前总结

    先放一张自己做的思维导图,当时思路不是太清晰,只能看出来当时学的大概是啥... * 树: 1.逻辑结构的一种. 2.树中包含的基本概念. ①结点.度.层次 ②双亲.孩子.兄弟 二叉树 1.为什么要研究 ...

  6. 408数据结构考研笔记——第五章树与二叉树(重点)

    目录 一.基本概念 1.定义 2.基本术语 3.性质(重点!!) 二.二叉树 1.定义 2.特殊二叉树 1.满二叉树 2.完全二叉树 3.二叉排序树 4.平衡二叉树 3.性质 4.存储结构 1.顺序存 ...

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

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

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

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

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

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

最新文章

  1. ActiveMQ依赖JDK版本关系
  2. 背包思想计算方案的总数(货币系统)
  3. Ubuntu被曝严重漏洞:切换系统语言+输入几行命令,就能获取root权限
  4. linux 内核模块加载错误 disagree about version of symbol module_layout
  5. 说说今年网络安全的威胁和趋势
  6. xfce4设置屏保/锁屏时间
  7. Linux 系统下显示文件内容(查看文件内容)的命令 more/less/cat/head/tail 比较
  8. matlab绘制8条曲线,科学网—【Matlab】如何用plotyy对应坐标绘制多条曲线 - 叶瑞杰的博文...
  9. C语言函数为什么不可以声明默认参数?
  10. python可以调用c语言编写的底层代码吗_Python基础笔记系列十四:python无缝调用c程序...
  11. Java实现计算饮料价格GUI版(入门)
  12. 轻松学SQL Server数据库pdf
  13. 拼接字符串时的引号嵌套
  14. c语言 struct 的初始化
  15. 程序员如何写工作日志
  16. VS2010 .net4.0 登录QQ 获取QQ空间日志 右键选中直接打开日志 免积分 源码下载
  17. 四川大学计算机学院研究生推免细则,四川大学计算机学院2012届硕士研究生推荐免试实施细则...
  18. vim 修改文件出现错误 “ E45: ‘readonly’ option is set (add to override)“
  19. 移动通信网络规划:误码率
  20. 个人知识管理PKM:收集、消化、应用、创新

热门文章

  1. Andorid之为何要用到NDK?
  2. Android之二维码生成和识别
  3. [TP5填坑]关于助手函数input一不小心取不到get值的解决办法
  4. 2020美国纽约大学计算机科学排名,2020美国纽约大学排名第几
  5. 直男约会能有多奇葩​?
  6. 这三位同学的名字绝了!笑得肚子疼......
  7. 每年通过率仅1%的“天才考试”,中国到底应不应该学?
  8. 我怀疑全国最会吹牛的人,都在这8个公众号上了
  9. 这才是真正的,坐上来,自己动!| 今日趣图
  10. 干货|机器学习零基础?不要怕,吴恩达课程笔记第三周!逻辑回归与正则