二叉树的概念与性质

置知识:树的概念与性质

为了保证学习效果,请保证已经掌握前置知识之后,再来学习本章节!

每个结点最多只有两个子结点的有根树称为二叉树。常常对两个子结点的顺序加以区分,分别称之为左子结点和右子结点。大多数情况下, 二叉树 一词均指有根二叉树。

二叉树的性质比较丰富,本章节将介绍二叉树的性质。请熟记这些性质。

说明

学习目标

  • 熟练掌握二叉树的概念和各种性质
  • 能够综合利用二叉树的各种性质解决一些二叉树中的问题

二叉树的概念

定义

简单地理解,满足以下两个条件的树就是二叉树:

  1. 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;
  2. 本身是有序树,即左子树和右子树的顺序不能颠倒,即使只有一棵子树,也要区分是左子树还是右子树。

说明

形态

注意:以下各种情况下,一棵树都是一棵二叉树!

  1. 没有结点的树也是一棵树,称为空树!
  2. 只有一个根结点也是一棵树;
  3. 只有左子树的二叉树也是二叉树;
  4. 只有右子树的二叉树也是二叉树;
  5. 既有左子树,又有右子树的二叉树是一棵二叉树;

说明

几种特殊的二叉树

1 斜树

顾名思义,斜树一定是斜的,但是往哪边斜还是有讲究的。
① 所有节点都只有左子树的二叉树称为 左斜树
② 所有节点都只有右子树的二叉树称为 右斜树
③ 斜树的每一层都只有一个节点,节点的个数和二叉树的深度相同。

说明

2 满二叉树

在一棵二叉树中,如果所有分支节点都存在左子树和右子树(度为 2),并且所有叶子节点都在同一层上,这样
的二叉树称为满二叉树。

说明

3 完全二叉树

对一棵具有 𝑛n 个节点的二叉树按层次序编号,如果编号为 𝑖(1<𝑖≤𝑛)i(1<i≤n) 的节点与同样深度的满二叉树中编号
为 𝑖i 的节点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。

也可以这么去定义完全二叉树:如果二叉树中除了最下层,其他每层都饱满,最下层的结点都集中在该层最左边的若干位置上,则此二叉树被称为完全二叉树。

说明

注意:

(1)满二叉树是完全二叉树,完全二叉树不一定是满二叉树!

(2)在满二叉树的最下层上,从最右边开始连续删去若干结点后得到的二叉树仍然是一棵完全二叉树。

(3)在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。

二叉树的性质

由于二叉树结构的优美性,因此具有很多很好的性质。

  • 性质1. 若二叉树中,叶子结点数为 𝑛0n0​,度为 2 的结点数为 𝑛2n2​,则 𝑛0=𝑛2+1n0​=n2​+1。

    • 这个性质表明,在二叉树中,叶子结点的个数与度为度为 1 的结点个数无关。

    • 证明如下(选学):

      ​ (1)设度为 1 的结点数为 𝑛1n1​,那么显然有 𝑛=𝑛0+𝑛1+𝑛2n=n0​+n1​+n2​。—— ①

      ​ (2)设有 𝑒e 条边,那么显然有 𝑒=𝑛−1=𝑛1+2𝑛2e=n−1=n1​+2n2​。(𝑛n个结点的树有 𝑛−1n−1 条边,每个度为 1 的结点下有 1 条边,度为 2 的结点下有 2 条边,叶子结点下没有边)—— ②

      ​ (3)联立上面两个等式,② 式减 ① 式,即可得到 𝑛0=𝑛2+1n0​=n2​+1

  • 性质2. 二叉树第 𝑖i 层上的结点数目最多为 2𝑖−12i−1。(𝑖≥1i≥1,根节点深度为 11)

    • 证明:略。
  • 性质3. 深度为 𝑘k 的二叉树至多有 2𝑘−12k−1 个结点(𝑘≥1k≥1,根节点深度为 11)。

    • 证明:树的第一层有 1 个结点,第二层最多有 2 个结点,第三层最多 4 个结点,......,第 𝑘k 层最多 2𝑘−12k−1 个结点。所以最多结点数为 𝑆=20+21+22+...+2𝑘−1=2𝑘−1S=20+21+22+...+2k−1=2k−1。
    • 特别的,深度为 𝑘k,且有 2𝑘−12k−1 个结点的二叉树就是 满二叉树。满二叉树的每一层的结点数都达到了最大结点数。
  • 性质4. 具有 𝑛n 个结点的完全二叉树的深度为 ⌊log⁡2(𝑛)+1⌋⌊log2​(n)+1⌋。

    • 证明(选学):设完全二叉树的深度为 ℎh, 则根据性质3和完全二叉树的定义易知

      2ℎ−1−1<𝑛<=2ℎ−12h−1−1<n<=2h−1 或 2ℎ−1<=𝑛<2ℎ2h−1<=n<2h

      两边同时取对数,得 ℎ−1<=𝑙𝑜𝑔2𝑛<ℎh−1<=log2​n<h

      又因为 ℎh 是整数,因此求得 ℎ=⌊log⁡2(𝑛)+1⌋h=⌊log2​(n)+1⌋。

  • 性质5. 在完全二叉树中,若将结点从上往下,从左到右进行编号,编号 1∼𝑛1∼n。那么对编号为 𝑥x 的结点,则其父结点编号为 ⌊𝑥/2⌋⌊x/2⌋ ,左孩子编号为 2𝑥2x,右孩子编号为 2𝑥+12x+1。左右孩子存在的前提是其对应的编号不超过完全二叉树结点数量 𝑛n。父结点存在的前提是结点 𝑥x 不是根结点。

根结点父结点当前结点左子结点右子结点最后一个结点
存在条件——x/2 > 0——2*x <= n2*x + 1 <= n——
编号1x/2x2*x2*x + 1n

练习题

  1. 一棵完全二叉树的节点总数为18,其叶节点数是多少?
  2. 二叉树第10层的节点数的最大数目是多少?
  3. 一棵深度为10的满二叉树,其节点数量是多少?
  4. 一棵n个节点的完全二叉树,则该二叉树的高度h为?
  5. 如果一棵二叉树有N个度为2的节点,M个度为1的节点,则该树的叶子个数为?

练习题

  1. 一棵完全二叉树的节点总数为18,其叶节点数是多少?
  2. 二叉树第10层的节点数的最大数目是多少?
  3. 一棵深度为10的满二叉树,其节点数量是多少?
  4. 一棵n个节点的完全二叉树,则该二叉树的高度h为?
  5. 如果一棵二叉树有N个度为2的节点,M个度为1的节点,则该树的叶子个数为?

练习题答案

  1. 根据完全二叉树的定义和构成和性质 1,答案为 9
  2. 根据性质 2,答案为 210−1=512210−1=512
  3. 根据性质 3,答案为 1023
  4. 根据性质 4,答案为: ⌊log⁡2(𝑛)+1⌋⌊log2​(n)+1⌋
  5. 根据性质 1, 答案为 N+1
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值