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


    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中右孩子指针为空的结点个数

    解析:

    在这里插入图片描述

  • 相关阅读:
    .NET WinForm开放中的 窗体的 Designer.cs作用
    Unity VR开发教程 OpenXR+XR Interaction Toolkit 2.1.1 (六)手与物品交互(触摸、抓取)
    湖仓一体(Lakehouse)是什么?
    TCP--三次握手和四次挥手
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    LeetCode84:柱形图中最大的矩形
    基于STM32设计的老人防摔倒报警设备(OneNet)
    【测绘程序设计】Excel度分秒(° ‘ “)转换度(°)模板附代码超实用版
    Python 编程基础 | 第五章-类与对象 | 5.2、数据成员
    Element UI怎么安装呢?
  • 原文地址:https://blog.csdn.net/qq_37284798/article/details/134501737