树结构以及二叉树简单回顾

树结构

一种非线性结构,用来描述元素间层次关系,即一个结点的直接前驱若存在必唯一,直接后驱若存在,可有多个,也就是一对多的关系。

是一种非线性的数据结构,由结点和边组成。其特点是:

  • 层级结构:结点之间存在父子关系,形成层次。
  • 唯一根节点:树有且仅有一个根结点,无父结点。
  • 无环连通图:树是连通且无环的图,任意两结点间有且仅有一条路径。
  • 子树递归:每个结点的子结点构成子树,子树本身也是树。

连通图:是指无向图任意两个顶点之间都存在路径的图。即从图中的任何一个顶点出发,都可以通过边到达其他任意顶点。(性质:1、图中任意两个顶点之间至少存在一条路径。2、图不存在孤立的部分。)

对于有向图,若任意两个顶点之间双向可达(即存在从u到v和从v到u的路径),则称为强连通图;若忽略边的方向后形成的无向图是连通的,则称为弱连通图

树的相关概念

结点相关术语

  • 根结点:有且仅有一个特定的称为根结点。
  • 内部结点:至少有一个子结点的结点。
  • 叶子结点:无子结点的结点。
  • 父结点:当前结点的直接前驱。
  • 子结点:当前结点的所有直接后继。
  • 兄弟结点:拥有同一父结点的结点。

树的结构术语

  • :结点的子结点数量。树的度为所有结点度中的最大值。
  • 层次:根结点为第1层,其余结点层次为其父结点层次+1。
  • 高度/深度:树中结点的最大层次,即树共有多少层。
  • 路径:一个结点去到另一个结点所经过的结点序列。

二叉树 

每个结点最多(也可以仅有一个结点或者没有结点)有两个子节点,分别称为左子结点和右子结点。其特定是:

  • 二叉树可以为空,即不含任何结点的空集为空二叉树。
  • 每个结点最多有两个孩子,分别称为该结点的左孩子和右孩子。即所有结点的度都小于或等于2。
  • 二叉树子树有左,右之分,次序不能颠倒,是有序树(一棵树的各结点的子树从左到右依次有序,不能交换)。

常见形态

  • 满二叉树:任意一层的结点数都达到最大值。
  • 完全二叉树:满二叉树的基础上,可从最底层开始,依次去掉部分叶子结点。

 完全二叉树特征

  • 叶结点只可能出现在最底下两层。
  • 任意一个结点的左分支下的最大层次为 l ,则其右分支下的最大层次为 l 或 l-1(结点想去掉必须从该层最右侧依次往左去掉)。
  • 满二叉树必为完全二叉树,但是反过来不一定。

常见性质 

  1. 结点数=总度数+1(因为每个结点都有唯一的一个前驱,除根结点外。)
  2. 度为 m 的树的第 i 层至多有m^{i-1} (i>=1)个结点(假设有棵度为3的树,其必有某个结点有3个子结点,又要求达到最多的结点数,所以该树的所有结点都应该达到度为3。故该树第1层有3^{1-1} 个结点,第2层有3^{2-1}个结点,第3层有3^{3-1}个结点......第k+1层的每个节点是第k层节点的子节点,而第k层最多有 3^{k-1} 个节点,每个节点最多有3个子节点。)
  3. m叉树第 i 层至多有m^{i-1} (i>=1)个结点。
  4. 高度为h的m叉树至多有\frac{m^{h}-1}{m-1}个结点(每一层至多有m^{i-1}结点,共h层,将每一层数量相加,为等比数列求和,即m^{0}+m^{1}+m^{2}+...+m^{h-1} 。)
  5. 高度为h,度为m的树至少有h+m-1个结点(度为m的树有要求,即至少存在一个结点的度为m。)
  6. 高度为h的m叉树至少有h个结点(m叉树分支没有固定要求,所以,至少的情况是退化为链表,即每一层只有一个结点。)
  7. 具有n个结点的m叉树的最小高度为\left \lceil \log_{m} ( n(m-1) +1 ) \right \rceil(求最小高度,则要尽可能让每一层结点数最多,由上述4知道,如果如果n个结点的高度为h层,则n值应该大于h-1层的满m叉树结点数,同时小于或等于h层的满二叉树,即\frac{m^{h-1}-1}{m-1}<n<=\frac{m^{h}-1}{m-1} 。

对于二叉树,则把上述m叉树的m替换为2即可

二叉树的性质

  1. 一个非空二叉树的第 i 层上最多有2^{i-1} (i>=1)个结点。
  2. 深度为k的二叉树最多有2^{k-1} (k>=1)个结点(当深度为k且结点数为2^{k-1}个结点时,该二叉树为满二叉树)。
  3. 任何一棵二叉树中,叶结点个数为n_0,度为2的结点个数为n_2,有n_0=n_2+1 。
  4. 具有n个结点的完全二叉树的深度为\left \lceil \log_{2} ( n +1 ) \right \rceil 。
  5. 对一棵有n个结点的完全二叉树按从上到下,从左到右对结点从1-i 进行编号,对任意一个结点 i (1<=i<=n):若有双亲,双亲编号为\left \lfloor i/2 \right \rfloor;2i<=n时,i 的左孩子编号为2i;2i+1<=n时,i 的右孩子编号为2i+1 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一轮弯弯的明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值