树的定义:树(Tree)是 n(n≥0)个结点的有限集。若 n=0,称为空树;若 n > 0,则它满足如下两个条件:

(1)  有且仅有一个特定的称为根 (Root) 的结点;

(2)  其余结点可分为 m (m≥0) 个互不相交的有限集 T1, T2, T3, …, Tm, 其中每一个集合本身又是一棵树,并称为根的子树 (SubTree)。

显然,树的定义是一个递归的定义。

树的一些术语:

  • 结点的度(Degree):结点的子树个数;
  • 树的度:树的所有结点中最大的度数;
  • 叶结点(Leaf):度为0的结点;
  • 父结点(Parent):有子树的结点是其子树的根节点的父结点;
  • 子结点/孩子结点(Child):若A结点是B结点的父结点,则称B结点是A结点的子结点;
  • 兄弟结点(Sibling):具有同一个父结点的各结点彼此是兄弟结点;
  • 路径和路径长度:从结点n1到nk的路径为一个结点序列n1,n2,...,nk。ni是ni+1的父结点。路径所包含边的个数为路径的长度;
  • 祖先结点(Ancestor):沿树根到某一结点路径上的所有结点都是这个结点的祖先结点;
  • 子孙结点(Descendant):某一结点的子树中的所有结点是这个结点的子孙;
  • 结点的层次(Level):规定根结点在1层,其他任一结点的层数是其父结点的层数加1;
  • 树的深度(Depth):树中所有结点中的最大层次是这棵树的深度;

将树中节点的各子树看成从左至右是有次序的(即不能互换),则称为该树是有序树,否则称为无序树

森林(forest)是 m (m≥0) 棵互不相交的树的集合。

二叉树

在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。

虽然二叉树与树概念不同,但有关树的基本术语对二叉树都适用。

二叉树结点的子树要区分左子树和右子树,即使只有一 棵子树也要进行区分,说明它是左子树,还是右子树。树当 结点只有一个孩子时,就无须区分它是左还是右。

注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。

一些性质:

在二叉树的第 i 层上至多有  个结点 (i ≥1)。

证明:每个节点至多两个孩子,每一层至多比上一层多一倍的结点,根为1.

深度为 k 的二叉树至多有 个结点(k ≥1)。

证明:把每一层最大节点加起来即可

对任何一棵二叉树 T,如果其叶子数为 n0,度为 2的结点数为 n2,则 n0 = n2 + 1。

证明:对于一个只有根的树,n0 = n2 + 1成立。1=0+1

我们把一个叶子节点换成度为2的结点:

黑色节点原来为叶子节点

我们发现,度为2的结点数加1(黑色节点);叶子节点数加1(原来的去掉,新增两个);对于式子n0 = n2 + 1没影响,还是成立。

我们把叶子节点换成度为1的结点,比如没有右孩子。

我们发现,度为2的结点数没变。叶子节点数没变(减了一个加了一个)

所以,不管你怎么换,公式都成立。(佛系证明)

数据结构课上笔记10相关推荐

  1. 数据结构课上笔记12

    二叉树的存储结构 顺序存储结构 完全二叉树:用一组地址连续的 存储单元依次自上而下.自左至右存 储结点元素,即将编号为 i  的结点元 素存储在一维数组中下标为 i –1 的分量中. 一般二叉树:将其 ...

  2. 数据结构课上笔记11

    满二叉树 (Full binary tree) 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树. 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树 ...

  3. 数据结构课上笔记14

    图是一种:   数据元素间存在多对多关系的数据结构   加上一组基本操作构成的抽象数据类型. 图 (Graph) 是一种复杂的非线性数据结构,由顶点集合及顶点间的关系(也称弧或边)集合组成.可以表示为 ...

  4. 数据结构课上笔记15

    图的存储 多重链表:完全模拟图的样子,每个节点内的指针都指向该指向的节点. 节点结构内指针数为度 缺点:浪费空间.不容易操作 数组表示法(邻接矩阵表示法) 可用两个数组存储.其中一个 一维数组存储数据 ...

  5. 数据结构课上笔记13

    树存储结构 父节点表示法 数据域:存放结点本身信息. 双亲域:指示本结点的双亲结点在数组中的位置. 对应的树: /* 树节点的定义 */ #define MAX_TREE_SIZE 100typede ...

  6. R语言课上笔记(第1-4天)

    1. 第一天笔记 推荐的书籍: <R数据科学>推荐–<R语言入门与实践> <R语言与数据分析实战>–韩国人 <R语言数据可视化之美>–绘图 安装注意事项 ...

  7. 【课上笔记】第五章 数组和广义表

    数组和广义表 5.1多维数组 5.1.1数组的逻辑结构 数组是我们熟悉的一种数据结构,可以看作线性表的推广. 数组作为一种数据结构其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一类型.比如 ...

  8. 【课上笔记】第七章 树与森林

    树与森林 7.1树的概念与表示 7.1.1树的定义及相关术语 1.树的定义 ​ 树(Tree)是n(n≥0)个有限数据元素的集合.当n=0时,称这棵树为空树.在一棵非树T中: ​ ⑴有一个特殊的数据元 ...

  9. 【尚硅谷】Java数据结构与算法笔记10 - 树结构的基础部分

    文章目录 一.二叉树 1.1 为什么需要树结构 1.1.1 数组存储方式的分析 1.1.2 链式存储方式的分析 1.1.3 树存储方式的分析 1.2 树示意图 1.3 二叉树的概念 1.4 二叉树 - ...

最新文章

  1. Dos一键清理系统垃圾教程
  2. template模板的使用方法
  3. 机器学习教会我们的六件事
  4. go连接mysql数据库
  5. .mysql的配置文件是正确的,为啥启动后一查所展示的并不是自己设置的配置
  6. FD.io VPP利用iperf3进行UDP灌包测试-英特尔X520万兆网卡
  7. python - Numpy - matplotlib
  8. Windows 下安装 nvm 管理 nodejs 版本
  9. background 图片比例缩小_如何更精准控制背景图片?
  10. ubuntu报错 E:无法定位软件包
  11. python+opencv移动侦测(帧差法)
  12. MSP430F415IRTDR
  13. 工业互联网+危化安全生产综合管理平台怎样建
  14. 【项目实战】阿里云轻量云服务器中安装JDK1.8
  15. Linux 启动定时任务配置
  16. MacBook上有哪些好用的学习类软件
  17. 破壳漏洞的原理与利用
  18. 2022年亚太数学建模竞赛-问题C:全球变暖与否?-思路详解
  19. Illum voluptatum suscipit dolor tempore est sequi.
  20. unity quad使用材质球的小技巧

热门文章

  1. mysql主从复制不同步案例_Mysql主从不同步问题处理案例
  2. rt5350 中断初始化
  3. 微型计算机原理上机实验改错,北京理工大学微机原理汇编语言上机实验题
  4. AE开发右键缩放至图层
  5. 【转】Postman系列五:Postman中电商网站cookie、token检验与参数传递实战
  6. C#多线程编程系列(五)- C# ConcurrentBag的实现原理
  7. 【转】1.2SharePoint服务器端对象模型 之 对象模型概述(Part 2)
  8. Pandas数据可视化工具:图表工具-Seaborn
  9. java 酒店预定 app_Android应用源码酒店在线预定app项目全套
  10. 我要回家软件_工具用的好,下班回家早,推荐几个堪称神器的高效率软件