树、森林和二叉树的转换

树转化为二叉树

树一般是无序的,而二叉树是有序的,因此将树中的每一个结点的孩子结点从左到右依次编号。

将一棵树转化为二叉树的方法如下:
在这里插入图片描述

  • 树中所有相邻兄弟结点连线。
  • 对于树中的每一个节点,只保留它与自己第一个孩子结点之间的连线,删去它与其他孩子结点之间的连线。

树做这种转化所构成的二叉树是唯一的

在树所转化成的二叉树中,左分支的各结点在原来的树中是父子关系,右分支的各结点在原来的树中是兄弟关系。由于根节点没有兄弟,所以转化后的二叉树的根必定没有右结点。

森林转化为二叉树

森林是若干棵树的集合,森林转化为二叉树的方法如下:

  • 依次将森林中的树转化为二叉树。
  • 从第二棵二叉树开始,依次把当前二叉树作为前一棵二叉树的根节点的右子树连接。

示意图如下:
在这里插入图片描述

二叉树转化为森林

树转化成的二叉树,根结点没有右子树,因此是不可逆的。而森林转化成的二叉树,根结点有右子树,显然该过程是可逆的。

具体方法如下:

  • 若一个结点是其双亲的右孩子,则把从该结点沿右分支所找到的所有结点和它的双亲连接起来。
  • 删除二叉树中所有结点与其右子树的连线。

示意图如下:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值