小白的数据结构与算法学习笔记(二十二)----树、森林及二叉树的相互转换

本文介绍了普通树和森林如何转换为二叉树的方法,并详细解释了二叉树再转换回树或森林的过程。通过一系列步骤,使得树的处理更加规律化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在满足树的条件下,树可以有任意形状,任意多结点,任意多孩子,对这些树的处理十分复杂,因此就想把普通树尽可能转换成二叉树,这样就有规律可循。

一、普通树——>二叉树

1、在树中所有兄弟结点之间加一连线

2、对每个结点,除了保留与其长子(即最左边的孩子)的连线外,去掉该结点与其他孩子的连线(不是去掉与兄弟的连线)

3、调整位置:以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之层次分明

二、森林——>二叉树

1、将森林中每棵树变为二叉树

2、将各二叉树的根结点视为兄弟从左至右连在一起

3、调整位置

三、二叉树——>树、森林

1、若结点x是其双亲y的左孩子,则把x的右孩子,右孩子的右孩子,······,都与y相连

2、去掉所有双亲到右孩子之间连线(原图中的双亲和右孩子!!不是进行第1步之后的双亲和右孩子!!)

 注意:

判断一棵二叉树能够转换成树还是森林:只要看这棵二叉树的根结点有无右孩子!!有右孩子,则为森林;没有右孩子,则为一棵树。

                                                                                                                                                     BY    ZJQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值