树——通用树到二叉树的转换

1,已经创建了通用树结构,有必要创建另一种树结构吗?

 

2,简化树就直接减少结点中孩子的数量,但是这样树还能通用吗?

      

3,通用树结构的回顾:

 

       1,双亲孩子表示法:

              1,每个结点都有一个指向双亲的指针;

              2,每个结点都有若干个指向其孩子的指针;

             

4,另一种树结构模型:

 

       1,孩子兄弟表示法:

              1,每个结点都有一个指向其第一个孩子的指针;

              2,每个结点都有一个指向其第一个右兄弟的指针;

                     1,孩子兄弟表示法可以描述普通的树型结构,因为通过根结点可以访问到这一个树形结构的每一个结点;

                    

5,孩子兄弟表示法的特点:     

       1,能够表示任意的树形结构;

       2,每个结点包含一个数据成员和两个指针成员;

              1,形态相对固定,实现相对简单;

       3,孩子结点指针和兄弟结点指针构成了“树杈”;

              1,二叉表示法就是“孩子兄弟”表示模型,其抽象后就是二叉树,但实现不是用“孩子兄弟”指针实现的;

              2,二叉树是即将讨论的内容,不在关注通用树及其在二叉或者“孩子兄弟”表示法下是如何转换的,重点放在二叉树的相关内容创建和算法研究;

      

6,二叉树的定义:

       1,二叉树是由 n(n >= 0)个结点组成的有限集合,该集合或者为空,或者是由一个根结点加上两颗分别称为左子树和右子树的、互不相交的二叉树组成;

         

7,二叉树五种形态:

 

       1,二叉树结点只有三种形态,依据子结点数目分;

      

8,特殊二叉树:

 

       1,满二叉树(Full Binary Tree):

              1,如果二叉树中所有分支结点的度数都为 2,且叶子结点都在同一层次上,则称这类二叉树为满二叉树;

                     1,除了叶结点,任何分支结点度数都为 2,且叶结点在同一层次;

       2,完全二叉树(Complete Binary Tree):

              1,如果一棵具有 n 个结点的高度为 k 的二叉树,它的每一个结点都与高度为 k 的满二叉树编号为 1到 n 的结点一一对应,则称这棵树为完全二叉树。(从上到下从左到右编号)

                

9,完全二叉树特性:

       1,同样结点数的二叉树,完全二叉树的高度最小;

              1,按顺序排列的;

       2,完全二叉树的叶结点仅出现在最下面两层:

              1,最底层的叶结点一定出现在左边;

              2,倒数第二层的叶结点一定出现在右边;

              3,完全二叉树中度为 1 的结点只有左孩子;

                     1,完全二叉树是还没形成的满二叉树,满二叉树是完全二叉树;

             

10,小结:

       1,通用树结构采用了双亲结点表示法进行描述;

       2,孩子兄弟表示法有能力描述任意类型的树结构;

       3,孩子兄弟表示法能够将通用树转化为二叉树;

       4,二叉树是最多只有两个孩子的树;

转载于:https://www.cnblogs.com/dishengAndziyu/p/10925370.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何运行exe文件

有三种方式 第一种:找到所在文件双击运行。 第二种:在命令行里面运行所在文件夹的位置,在输入文件名。 第三种:加到环境变量里面执行 转载于:https://www.cnblogs.com/q2546/p/10931956.html

推荐几款提升效率的神器

1 数学公式神器:Mathpix Snip 作为理工科的学生或者经常用到数学的科研工作者,应该对数学公式都很头疼,不管是用LaTeX还是mathtype,都比较麻烦,要么需要频繁的鼠标点击,要么需要好的记忆力。而Mathpix Snip…

实验9 c++

problem &#xff1a;A 第一个类 #include <iostream> #include <iomanip> #include <cstring> #include <cmath> using namespace std;class Thing { private:string name; public:Thing(){}Thing(string n):name(n) {cout << "" <…

迭代器协议、斐波那契数列

f1.__iter__iter(f1)  把一个对象变成可迭代对象 __init__  构造函数 for循环遵循迭代器协议&#xff0c;要求对象有next、iter方法&#xff0c;有iter方法&#xff0c;for循环跟着对象对触发对象的方法&#xff08;协议规定&#xff09; 对象内部要有next方法 斐波那契数列…

如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?

白盒测试 白盒测试把测试对象看作一个打开的盒子&#xff0c;测试人员依据程序内部逻辑结构相关信息&#xff0c;设计或选择测试用例&#xff0c;对程序所有逻辑路径进行测试&#xff0c;通过在不同点检查程序的状态&#xff0c;确定实际的状态是否与预期的状态一致。 语句覆…

简易的实现对象内存池

简易的实现对象内存池MemoryNode结构体是保存每一个申请的内存节点&#xff0c;然后构成一个单链表。MemoryNodeList 结构体是保存的是每一块内存&#xff0c;当上一个内存块用完时&#xff0c;再次创建一个内存块。numofMemoryNode&#xff1a;一个内存块的内存节点数量 numof…

Linux关机操作

转载于:https://www.cnblogs.com/hlc-123/p/10958108.html

JAVA:贪吃蛇源代码

嘿嘿 新手来 表现了&#xff01;&#xff01;&#xff01; 2019年结束 游戏截图&#xff1a; 文件布局&#xff1a; 代码分享 用到的一些全局变量 //全局变量 public class Global {public static final int RECT_WIDTH20;//每个小方格的长宽public static final int WIDTH…

AppiumForWin安装

尝试安装Windows版本的Appium参考&#xff1a;http://www.cnblogs.com/fnng/p/4540731.html第一步&#xff1a;安装nodehttps://nodejs.org/en/安装成功后使用&#xff1a;node -v&#xff0c;进行验证第二步&#xff1a;安装Appium下面的方法失败&#xff1a;原因下载不成功&a…

activiti5第一弹-----基本的activiti示例

建立一个普通的javaSE工程&#xff0c;工程的目录结构如下&#xff1a;需要的jar包如下&#xff1a; 在config文件夹下创建log4j.properties用来输入日志&#xff0c;内容如下&#xff1a; log4j.rootLoggerINFO, CA # ConsoleAppender log4j.appender.CAorg.apache.log4j.Cons…

activiti5第三弹-----------脚本任务

首先是流程定义图&#xff1a; 重点关注一下流程节点中 Script Task 节点的 properties中的Main config 这里可以选择不同的脚本语言&#xff0c;由于其他的部怎么会就用javascript来吧。 从图中可以看出只是定义了一个变量x&#xff0c;它的值为 a; 很多人都说这样定义了这个…

activiti5第四弹----serviceTask中的java服务任务

activiti.cfg.xml内容&#xff1a; <?xml version"1.0"?> <beans default-lazy-init"false"xsi:schemaLocation" http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://ww…

activiti5第五弹 serviceTask中的webserviceTask 以及 shellTask

web service task是BPMN2.0中的一种任务类型&#xff0c;在activiti5中它并没有专门的标签表示&#xff0c;而是使用了service task 来表示。而且有很多要配置的内容是无法用图形化工具来完成的。要使用web service task&#xff0c;当然要先有web service。所以首先要编写一个…

activiti5第六弹 手动任务、接收任务、邮件任务

手动任务和接收任务几乎不在程序中做什么事情---只是在流程的历史中留下一点痕迹&#xff0c;表明流程是走过某些节点的。。。而且这两个任务是无法用taskservice查询到的 但是接收任务比手动任务多一个功能&#xff0c;就是确认功能。。。 activiti.cfg.xml配置 <?xml v…

手把手教你用原始方式上传项目至GitHub

小编GitHub&#xff1a;https://github.com/ds1889 首先你得注册一个自己的GitHub账号&#xff0c;注册网址&#xff1a;https://github.com/join 有了自己的账号以后&#xff0c;就可以进行登录&#xff0c;开始创建一个新的项目 创建一个新的项目&#xff0c;填写项目名称&am…

office如何快速删除重复数据

1、首先打开如下文档&#xff0c;在A列删除重复日期星期一&#xff0c;星期二&#xff1b; 2、选中编号栏&#xff0c;&#xff21;1-&#xff21;10&#xff0c;如下图: 3、点击数据——删除重复项&#xff1b;如下图红色剪头所指: 4、删除后&#xff0c;重复项就被删除成功。…

SQL中and和or的区别是?

今天有这样得一个需求&#xff0c;如果登陆人是客服的话&#xff0c;会查询订单是’该客服’以及还没有匹配客服的&#xff0c;刚开始想的是直接在sql语句上拼写 or assigned_id is null 的&#xff0c;测试了一下发现这样的话&#xff0c;前面的其他条件都没有用了 这样的话…

Java编程设计---数组Arrays

数组的的定义 数组是存放在连续存储空间的元素集合 数组定义的格式&#xff1a; int[] arrnew int[5]; int&#xff1a;数组元素的数据类型&#xff0c;可以是基本数据类型&#xff0c;也可以是引用 arr&#xff1a;数组名称 5&#xff1a;数组中元素个数 第一步&#xff1a;定…

SpringBoot整合升级Spring Security 报错 【The request was rejected because the URL was not normalized】...

前言 最近LZ给项目框架升级&#xff0c; 从Spring1.x升级到Spring2.x, 在这里就不多赘述两个版本之间的区别以及升级的原因。 关于升级过程中踩的坑&#xff0c;在其他博文中会做比较详细的记录&#xff0c;以便给读者参考&#xff0c;不要掉进同样的坑里。 这里我们讨论一个关…

个人测试作业

作业所属课程&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业地址&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3340 作业目标&#xff1a;测试其他同学项目 姓名&#xff1a;潘云峰201731062423 所…