java一般树转二叉树_数据结构之树、森林和二叉树的转换详解

本文详细介绍了如何将树、森林转换为二叉树,以及二叉树转换回树和森林的过程,包括具体步骤和案例。同时,文章讲解了树与森林的先根遍历和后根遍历方法,与二叉树遍历的关系。适合对数据结构感兴趣的读者深入理解树和二叉树的转换与遍历。
摘要由CSDN通过智能技术生成

本文介绍了树、森林和二叉树之间的转换策略,并且附有相关图片演示。最后还介绍了树与森林的通用遍历方式。对二叉树不了解的,建议先看这篇文章:二叉树的入门以及Java实现案例详解。

1 树转换为二叉树

对树采用孩子兄弟表示法即可,关于孩子兄弟表示法,可以看这篇文章:树结构的入门以及Java通用实现方式,其中的实现方法中有介绍。

树转换为二叉树的具体步骤:

加线。在所有兄弟结点之间加一条连线。

去线。对树中每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线。

层次调整。以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。注意第一个孩子是二叉树结点的左孩子,兄弟转换过来的孩子是结点的右孩子。

1.1 案例

如下一颗普通的树:

e045f652e2ebbd6e1becc782f81f7c44.png

添加连线。在所有兄弟结点之间加一条连线。加线使用红色线表示:

fb7bf2890965fb4761a5bef76695ffb5.png

删除连线。对树中每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线。删除线使用虚线表示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值