树&二叉树&&满二叉树&&完全二叉树&&完满二叉树

时间:2022-09-02 17:15:14

名称 作用
树的顶端结点
孩子 当远离根(Root)的时候,直接连接到另外一个结点的结点被称之为孩子(Child);
双亲 相应地,另外一个结点称为孩子(child)的双亲(parent);
兄弟 具有同一个双亲(Parent)的孩子(Child)之间互称为兄弟(Sibling)。
祖先 结点的祖先(Ancestor)是从根(Root)到该结点所经分支(Branch)上的所有结点。
子孙 反之,以某结点为根的子树中的任一结点都称为该结点的子孙(Ancestor)。
叶子(终端结点) 没有孩子的结点(也就是度为0的结点)称为叶子(Leaf)或终端结点。
分支(非终端结点) 至少有一个孩子的结点称为分支(Branch)或非终端结点。
结点所拥有的子树个数称为结点的度(Degree)。
一个结点和另一个结点之间的连接被称之为边(Edge)。
层次 结点的层次(Level)从根(Root)开始定义起,根为第0层,根的孩子为第1层。以此类推,若某结点在第i层,那么其子树的根就在第i+1层。
结点的高度 结点的高度是该结点和某个叶子之间存在的最长路径上的边的个数。
结点的深度 结点的深度是从树的根结点到该结点的边的个数。 (注:树的深度指的是树中结点的最大层次。)

二叉树

定义 : 每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒
性质 :
(1)若二叉树的层次从0开始,则在二叉树的第i层至多有2^i个结点(i>=0)。
(2)高度为k的二叉树最多有2^(k+1) - 1个结点(k>=-1)。 (空树的高度为-1)
(3)对任何一棵二叉树,如果其叶子结点(度为0)数为m, 度为2的结点数为n, 则m = n + 1。

完美二叉树(又名满二叉树)(Perfect Binary Tree)

一个深度为k(>=-1)且有2^(k+1) - 1个结点的二叉树称为完美二叉树。 (注: 国内的数据结构教材大多翻译为"满二叉树")

例如:
树&二叉树&&满二叉树&&完全二叉树&&完满二叉树

完全二叉树(Complete Binary Tree)

完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。

例如:
树&二叉树&&满二叉树&&完全二叉树&&完满二叉树

完满二叉树(Full Binary Tree)

所有非叶子结点的度都是2

例如:
树&二叉树&&满二叉树&&完全二叉树&&完满二叉树

树&二叉树&&满二叉树&&完全二叉树&&完满二叉树的更多相关文章

  1. javascript实现数据结构: 树和二叉树的应用--最优二叉树(赫夫曼树),回溯法与树的遍历--求集合幂集及八皇后问题

    赫夫曼树及其应用 赫夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树,有着广泛的应用. 最优二叉树(Huffman树) 1 基本概念 ① 结点路径:从树中一个结点到另一个结点的之间的分支 ...

  2. 遍历二叉树 traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化

    遍历二叉树   traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化 1. 二叉树3个基本单元组成:根节点.左子树.右子树 以L.D.R ...

  3. 二叉树&满二叉树与完全二叉树

    二叉树的定义 二叉树(Binary Tree)是n(n≥0)个元素的有限集合,该集合为空或者为由一个称为"根"的元素及两个不相交的.被分别称为左子树和右子树的二叉树组成 二叉树的基 ...

  4. 团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树

    L2-006. 树的遍历 #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...

  5. Lintcode---把排序树组转换为高度最小的二叉树

    给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树. 注意事项 There may exist multiple valid solutions, return any of them. ...

  6. ACM程序设计选修课——Problem D&colon; &lpar;ds&colon;树&rpar;合并果子(最优二叉树赫夫曼算法)

    Problem D: (ds:树)合并果子 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 80  Solved: 4 [Submit][Status][ ...

  7. JAVA实现二叉树&lpar;简易版--实现了二叉树的各种遍历&rpar;

    1,个人感觉二叉树的实现主要还是如何构造一颗二叉树.构造二叉树函数的设计方法多种多样,本例采用 addNode 方法实现.以下程序通过定义内部类来表示二叉树的结点,然后再实现了二叉树这种数据结构的一些 ...

  8. c&plus;&plus;实现二叉树层序、前序创建二叉树,递归非递归实现二叉树遍历

    #include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...

  9. 二叉树各种相关操作&lpar;建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版&rpar;

    将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...

随机推荐

  1. Swift基础--通知&comma;代理和block的使用抉择以及Swift中的代理

    什么时候用通知,什么时候用代理,什么时候用block 通知 : 两者关系层次太深,八竿子打不着的那种最适合用通知.因为层级结构深了,用代理要一层一层往下传递,代码结构就复杂了 代理 : 父子关系,监听 ...

  2. a byte of python &lpar;摘01&rpar;

    a byte of python 第一章 介绍 Python 特色 简单.易学.免费.开源 高层语言.可移植性.解释性 面向对象.可扩展性.可嵌入性 丰富的库 第二章 安装Python http:// ...

  3. 在springmvc中&comma;获取Connection接口

    ServletContext context = request.getSession().getServletContext();WebApplicationContext wac = WebApp ...

  4. Fping

    (十大特色功能) Ping是最常用的网络测试工具,ping的测试功能其实比较多,xp系统的ping有12个选项.但是,fping测试工具有25个选项,在ping的基础上增加了许多专业的功能,可用于更深 ...

  5. java反射1

    一.Class部分 加载类的几种方式 // 1. Class clazz = Class.forName("com.wzh.test.reflect.Person"); // 2. ...

  6. CC&plus;&plus;初学者编程教程&lpar;6&rpar; 配置WindowsXP虚拟机与VC6&period;0

    1.我们安装需要下列文件. 2.新建一个虚拟机. 3. 选择默认的 Vmware Work Station10.0 4. 我们选择这个WindowsXP镜像. 5. 我们复制一个WindowsXPSP ...

  7. php强制下载文件并显示原始文件名

    原来一直没有接触过,这几天一直在玩儿文件上传下载的东西.今天又遇到一个坑. 描述:文件上传至服务器后,如果是rar或则其他的非浏览器直接识别的格式,用户点击链接了后是可以直接就被下载下来的.那么如果上 ...

  8. &lbrack;JS&rsqb;&lbrack;jQuery&rsqb;清空元素html&lpar;&quot&semi;&quot&semi;&rpar;、innerHTML&equals;&quot&semi;&quot&semi; 与 empty&lpar;&rpar;的区别 、remove&lpar;&rpar;区别

    清空元素html("").innerHTML="" 与 empty()的区别 一.清空元素的区别     1.错误做法一:           $(" ...

  9. On-Heap与Off-Heap

    和C#里的托管代码.非托管代码类似

  10. VB控件间的拖放

    新建工程,放置控件Picture1,Text1,Text2,复制下面的代码运行 Text1和Text2可以互相拖放,也可以将Picture1拖放给Text1,Text2. Private Sub Fo ...