数据结构中树、森林 与 二叉树的转换

news/2025/2/6 4:02:00/

1 树转换为 二叉树

将树转换成二叉树的步骤是:

  1. 加线。在所有的兄弟结点之间加一条线。
  2. 去线。对于树中的每个结点,只保留它与第一个孩子结点的连线,删除该结点其他孩子结点之间的连线。
  3. 调整。以树的根结点为轴心,将整个树顺时针旋转一定的角度(该结点的第一个孩子是该结点的左孩子,左孩子的兄弟是该结点的右孩子 )

在这里插入图片描述

2 森林转换为二叉树

森林是由若干棵树组成,可以将森林中的每棵树的根结点看作是兄弟,由于每棵树都可以转换为二叉树,所以森林也可以转换为二叉树。

将森林转换为二叉树的步骤是:

  1. 先把每棵树转换为二叉树;
  2. 第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子结点,用线连接起来。当所有的二叉树连接起来后得到的二叉树就是由森林转换来的二叉树。

在这里插入图片描述

3 二叉树转换为树

二叉树转换为树是树转换为二叉树的逆过程,其步骤是:

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

在这里插入图片描述

4 二叉树转换为森林

二叉树转换为森林步骤如下:

  1. 先把每个结点与右孩子结点的连线删除,得到分离的二叉树;
  2. 把分离后的每棵二叉树转换为树;
  3. 整理第(2)步得到的树,使之规范,这样得到森林。

在这里插入图片描述

5 实战演练

5.1 例题1

(2009年408第6题)题目:将森林转换为对应的二又树,若在二又树中,结点 是结点 的父结点的父结点,则在原来的森林中,u和可能具有的关系是

I.父子关系
II.兄弟关系
III.u的父结点与的父结点是兄弟关系

A.只有II
B.I和II
C.I和III
D.I、II和III

解析:
在这里插入图片描述

5.2 例题2

(2014年408第5题)题目:将森林 F 转换为对应的二叉树 T,F 中叶结点的个数等于

A.T中叶结点的个数
C.T中左孩子指针为空的结点个数
B.T中度为 1的结点个数
D.T中右孩子指针为空的结点个数

解析:

在这里插入图片描述


http://www.ppmy.cn/news/1230900.html

相关文章

【网络学习笔记】

记录一下关于域名,dns,反向代理知识的一些内容 通过阿里云函数进行反向代理 阿里云函数计算fanxiangdaili 逻辑 和cloudflare的workers的差不多(前几天突然不能用了,使用魔法还能用,不过今天又莫名其妙恢复了&#xf…

智能门禁刷脸照片格式gif、bmp,png转换,转换base64

随着刷脸闸机的普及,很多场所都使用了刷脸金闸机,很多时候对方传来的照片格式不对。 刷脸闸机对应的格式都是jpg 照片来源:访客手机上传,管理员上传,团队购票上传 在转换的语言很多,在网站中php使用较为…

Hbuilder开发运行真机上“同步资源失败,未得到同步资源的授权...” 错误解决

uni开发app运行真机上“同步资源失败,未得到同步资源的授权…” 错误解决 使用adb命令到真机上,卸载基座即可。使用adb命令: adb uninstall io.dcloud.HBuilder 注意: 看到网上好多使用:adb shell pm list package -3…

米勒拉宾算法——素性测试

背景 对于一个数n,如果想要判断它是否为素数,常规的方法为试除法。即,让n依次除以2到 n \sqrt{n} n ​以内的整数。如果有出现除尽的情况,则为合数。 该方法的时间复杂度为 O ( n ) O(\sqrt{n}) O(n ​),在面对n为长整…

JAVA maven pom packaging标签

packaging标签可设置的值 指定打包类型使用标签,它默认是 jar 类型 1、pom 父类型都为pom类型,多用于微服务项目 pom 2、jar 内部调用或者是作服务使用 jar 3、war 打包项目,用于在容器(Tomcat、Jetty等)上部署 wa…

浅析ChatGPT中涉及到的几种技术点

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

【C++心愿便利店】No.14---C++之探索list底层原理

文章目录 前言一、list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity1.2.4 list element access1.2.5 list modifiers1.2.6 list operations1.2.7 list的迭代器失效 二、list的模拟实现2.1 定义一个结构体实现list的…

腾讯云轻量应用服务器三年租用价格表_免去续费困扰

腾讯云服务器续费贵所以一次性买3年或5年,腾讯云轻量应用服务器3年价格有优惠,CVM云服务器5年有特价,腾讯云3年轻量和5年云服务器CVM优惠活动入口,3年轻量应用服务器配置可选2核2G4M和2核4G5M带宽,5年CVM云服务器可以选…