数据结构-树(树、森林和二叉树之间的转换)

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


计算机程序设计中,数据结构是非常重要的一环,它是对计算机内存、数据等内容的一种规划与安排,它对程序的可读性,扩展性以及是否健壮等方面有很大帮助。

在数据结构中数组的搜索相对比较方便,通过下标直接可以进行选择,但删除或者插入某些元素就会比较麻烦。 链表与数组正好相反,它在删除和插入数据操作中很快,但是查找却比较慢。

二叉树就既有链表的好处,也有数组的好处,在处理大批量的动态的数据是比较有用,所以一般会将一些无序树、森林等转换为二叉树进行数据处理相对比较方便。

一、树转换为二叉树

转换方法:

  1. 加线:将所有兄弟结点用一条线连接起来;
  2. 去线:对树中的每个结点,只保留该结点与其第一个左孩子结点之间的连线,删除它与其它孩子结点之间的连线;
  3. 层次调整:以树的每根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)
1、加线
2、去线
3、层次调整
### 二、森林转换为二叉树 森林是由若干棵树组成,可以理解为森林中的每一棵树都是兄弟,按照兄弟的处理办法来操作。

转换方法:

  1. 转换:把每一棵树单独转换成二叉树;
  2. 连线:保持第一棵二叉树不变,从第二棵二叉树开始,依次将后一棵二叉树的根节点作为前一棵二叉树根节点的右孩子,用线连起来;

三、二叉树转换为树

二叉树转换为树可看作树转换为二叉树的逆过程。

转换方法:

  1. 加线:当某结点的左孩子结点存在,则将这个左孩子的n个右孩子结点都作为此结点的孩子。将该结点与这些右孩子结点用线连接起来;
  2. 去线:删除二叉树中所有结点与其右孩子之间的连线;
  3. 层次调整:整理(1)和(2)两步得到的树,使之结构层次分明。

四、二叉树转换为森林

判断一棵二叉树能够转换成一棵树还是森林,首先需要看这棵二叉树的根结点有没有右孩子,有就可转为森林,没有就是一棵树。

转换方法:

  1. 去线:从二叉树根结点开始,若其右孩子结点存在,则把与右孩子结点的连线删除,再查看分离后的二叉树,若右孩子存在,则连线删除……,直到所有右孩子连线都删除为止,得到分离的二叉树。;
  2. 转换:将分离的二叉树转换成树

🤨
O.O
🙃

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值