当前位置: 首页 > news >正文

第7章树和二叉树:二叉树的定义和性质

7.2 二叉树的定义和性质

1. 二叉树的定义

二叉树(Binary tree)是 n (n≥0)n~(n\ge0)n (n0) 个结点所构成的集合,它或为空树(n=0n=0n=0);或为非空树,对于非空树 TTT

  • 有且仅有一个称之为根的结点;
  • 除根结点之外的其余结点分为两个互不相交的子集 T1T_1T1T2T_2T2 ,分别称为 TTT 的左子树和右子树,且 T1T_1T1T2T_2T2 本身又都是二叉树。

二叉树的定义是递归的,并且根据定义不难看出,它有如下特点:

  • 二叉树每个结点至多只有两棵子树,即二叉树中不存在度大于 2 的结点;
  • 二叉树的子树有左右之分,其次序不能任意颠倒,即二叉树是有序树。

根据上述定义,可知二叉树可以有如图 7.2.1 所示的 5 种基本形态。

在这里插入图片描述

图 7.2.1 二叉树的基本形态

二叉树的结构简单、存储效率高,相关运算的算法也相对简单,而且,任何 mmm 次树都可以转化为二叉树结构,因此二叉树具有很重要的地位。

注意区分:二叉树 VS 度为 2 的树(2 次树)(讨论非空树)。

2. 满二叉树和完全二叉树

满二叉树和完全二叉树,是两种特殊形态的二叉树。

(1)满二叉树:在一颗二叉树中,如果所有具有分支的结点都有左孩子和右孩子,并且叶子结点都集中在二叉树的最下一层,这样的二叉树称为满二叉树(Full Binary Tree),如图 7.2.2 所示。

在这里插入图片描述

图 7.2.2 满二叉树

非空满二叉树的特点:

  • 深度(高度)为 hhh 且含有 2h−12^h-12h1 个结点。
  • 每一层上的结点数都是最大结点数,即第 iii 层的结点数是 2i−12^{i-1}2i1
  • 叶子结点都在最下一层。
  • 只有度为 0 和度为 2 的结点。

(2)完全二叉树(Complete Binary Tree):若二叉树中最多只有最下两层的结点的度数可以小于 2,并且最下面一层的叶子结点都依次排列在该层最左边的位置上,则这样的二叉树称为完全二叉树,如图 7.2.3 所示。

在这里插入图片描述

图 7.2.3 完全二叉树

完全二叉树的特点:

  • 叶子结点只可能在最下面两层中出现。
  • 对于最大层次中的叶子结点,都依次排列在该层最左边的位置上。
  • 如果有度为 1 的结点,只可能有一个,且该结点只有左孩子而无右孩子。
  • 当结点总数 nnn 为奇数时,n1=0n_1=0n1=0 (度为 1 的结点数是 0 个);当结点总数 nnn 为偶数时,n1=1n_1=1n1=1
  • 对任意结点,若其右分支下的子孙的最大层次为 lll ,则其左分支下的子孙最大层次必为 llll+1l+1l+1
  • 满二叉树是完全二叉树的一种特例。

3. 二叉树的性质

【性质 1】非空二叉树上的叶子结点数(度为 0 的结点数,记作 n0n_0n0)等于双分支结点数(度为 2 的结点数,记作 n2n_2n2)数加 1:n0=n2+1n_0=n_2+1n0=n2+1

证明:

设二叉树上的叶子结点数为 n0n_0n0 ,即度为 0 的结点数;度为 1 的结点(只有单分支的结点)数为 n1n_1n1 ;度为 2 的结点(有两个分支的结点)数为 n2n_2n2 。则这棵二叉树总结点数 nnn 为:
n=n0+n1+n2 n=n_0+n_1+n_2 n=n0+n1+n2
又因为:

  • 每个度为 1 的结点,有一个分支,则 n1n_1n1 个度为 1 的结点,有 n1n_1n1 个分支,即所有度为 1 的结点的总的度数是 n1n_1n1
  • 每个度为 2 的结点,有两个分支,则 n2n_2n2 个度为 2 的结点,有 2n22n_22n2 个分支,即所有度为 2 的结点的总的度数是 2n22n_22n2

故:所有结点的分支数,即所有结点的度之和=n1+2n2n_1+2n_2n1+2n2

在二叉树中,除了根结点之外,每个结点都有唯一一个分支指向它,假设二叉树中的结点总数为 nnn ,那么用 nnn 表示的分支总数为 n−1n-1n1

所以:n1+2n2=n−1n_1+2n_2 = n-1n1+2n2=n1 。将 n=n0+n1+n2n=n_0+n_1+n_2n=n0+n1+n2 代入此式,最终得到:
n0=n2+1 n_0=n_2+1 n0=n2+1

二叉树问题中计算结点时常用的关系式:

  • 所有结点的度之和 = n−1n-1n1 = n1+2n2n_1+2n_2n1+2n2
  • n=n0+n1+n2n=n_0+n_1+n_2n=n0+n1+n2

【性质 2】在非空二叉树的第 iii 层上至多有 2i−12^{i-1}2i1 个结点(i≥1i\ge1i1)。

证明:利用归纳法

i=1i=1i=1 时,只有一个根结点。显然,2i−1=20=12^{i-1}=2^0=12i1=20=1 ,命题成立。

假设在第 i−1 (i>2)i-1~(i\gt2)i1 (i>2) 层命题成立,即至多有 2i−22^{i-2}2i2 个结点。

由于二叉树每个结点的度最大值是 2,即每个节点最多有 2 个分支,每个分支对应一个结点。那么在第 iii 层上最大的结点数是第 i−1i-1i1 层上最大结点数的 2 倍,即:
2×2i−2=2i−1 2\times2^{i-2}=2^{i-1} 2×2i2=2i1
故原命题成立。

【性质 3】深度(高度)为 hhh 的二叉树至多有 2h−12^h-12h1 个结点(k≥1k\ge1k1)。

证明:

根据二叉树的深度(高度)的定义可知,深度(高度)为 hhh ,即二叉树共有 hhh 层,即从根结点的第 1 层到叶子结点的第 hhh 层。

根据性质 2 可知,每一层的结点最大数量是 2i−12^{i-1}2i1 ,于是二叉树总的结点数的最大值是:
∑i=1h2i−1 \sum_{i=1}^h2^{i-1} i=1h2i1
根据 ∑i=0n2i=2n+1−1\sum\limits_{i=0}^n2^i=2^{n+1}-1i=0n2i=2n+11 ,可得:
∑i=1h2i−1=2h−1 \sum_{i=1}^h2^{i-1}=2^h-1 i=1h2i1=2h1

【性质 4】(完全二叉树)具有 nnn 个结点的完全二叉树的深度(高度)为 ⌊log⁡2n⌋+1\lfloor\log_2n\rfloor+1log2n+1

证明:

假设完全二叉树的深度(高度)为 hhh ,结点总数为 nnn ,由性质 3 可得:n≤2h−1n\le2^h-1n2h1

对于高度为 hhh 的完全二叉树,根据完全二叉树的定义可知,从根结点的第 1 层到第 h−1h-1h1 层,每层根结点都是“满的”(相当于高度为 h−1h-1h1 的满二叉树),每层结点数:

层序结点数
121−12^{1-1}211
222−12^{2-1}221
323−12^{3-1}231
⋮\vdots⋮\vdots
h−1h-1h12h−22^{h-2}2h2

所以,高度为 h−1h-1h1 的满二叉树的结点总数是:
20+21+⋯+2h−1=∑i=1h−12i−1=2h−1−1 2^0+2^1+\cdots+2^{h-1}=\sum_{i=1}^{h-1}2^{i-1}=2^{h-1}-1 20+21++2h1=i=1h12i1=2h11
根据完全二叉树定义可知,高度为 hhh 的完全二叉树总结点数 nnn 一定大于 2h−1−12^{h-1}-12h11 。故:
2h−1−1<n≤2h−12h−1≤n<2hh−1≤log⁡2n<h \begin{split} 2^{h-1}-1\lt &n\le2^h-1 \\2^{h-1}\le &n\lt 2^h \\h-1\le&\log_2n\lt h \end{split} 2h11<2h1h1n2h1n<2hlog2n<h
所以:h≤log⁡2n+1h\le\log_2n+1hlog2n+1 ,且 h>log⁡2nh\gt\log_2nh>log2n

又因为 hhh 是正整数,所以:h=⌊log⁡2n⌋+1h=\lfloor\log_2n\rfloor+1h=log2n+1 ,即 h=log⁡2(n+1)h=\log_2(n+1)h=log2(n+1) 或者 h=log⁡2n+1h=\log_2n+1h=log2n+1

例 7.2.1 一棵完全二叉树上有 1001 个结点,其中叶子结点的个数是( )。

A. 250\qquad B. 500\qquad C. 254\qquad D. 501

【解】

假设完全二叉树中,度为 0 的结点(叶结点)个数为 n0n_0n0 ,度为 1 的结点个数为 n1n_1n1 ,度为 2 的结点个数为 n2n_2n2 ,根据题意可知:
n0+n1+n2=1001(1) n_0+n_1+n_2=1001\tag{1} n0+n1+n2=1001(1)
又由二叉树的性质一:
n0=n2+1(2) n_0=n_2+1\tag{2} n0=n2+1(2)
再根据完全二叉树的特点可知,n1n_1n1 的值可能是:
n1={0,此时完全二叉树的结点总数是奇数1,此时完全二叉树的结点总数是偶数 n_1=\begin{cases}0,此时完全二叉树的结点总数是奇数\\1,此时完全二叉树的结点总数是偶数\end{cases} n1={0,此时完全二叉树的结点总数是奇数1,此时完全二叉树的结点总数是偶数
本题中完全二叉树的结点总数是 1001(奇数),所以 n1=0n_1=0n1=0 ,结合(1)(2)式,计算可得:n0=501n_0=501n0=501

本题答案:D

例 7.2.3 一个具有 1025 个结点的二叉树的高 h 为( )。

A. 11\qquad B. 10\qquad C. 11至1025之间\qquad D.10至1024之间

【解】

  • 当每层只有一个结点时,二叉树的高度最高,此时 h=1025h=1025h=1025
  • 当二叉树趋于满二叉树(即为完全二叉树)时,高度最小,此时 h=⌊log⁡2n⌋+1=⌊log⁡21025⌋+1=11h=\lfloor\log_2n\rfloor+1=\lfloor\log_21025\rfloor+1=11h=log2n+1=log21025+1=11

所以 hhh 介于 11 和 1025 之间。

本题答案:C

例 7.2.4 深度为 hhh 的满 mmm 叉树的第 kkk 层有( )个结点。(1≤k≤h1\le k\le h1kh)

A. mk−1m^{k-1}mk1\qquad B. mk−1m^k-1mk1\qquad C. mh−1m^{h-1}mh1\qquad D. mh−1m^h-1mh1

【解】

mmm 叉树每个非叶子结点有 mmm 个分支,则:

  • 第 1 层是根结点,有 1 个结点;
  • 第 2 层有 mmm 个结点;
  • 第 3 层有 m2m^2m2 个结点;
  • 第 4 层有 m3m^3m3 个结点;
  • ⋯\cdots
  • kkk 层有 mk−1m^{k-1}mk1 个结点;
  • ⋯\cdots
  • hhh 层有 mh−1m^{h-1}mh1 个结点。

mmm 叉树的结点总数是 mk−1m^{k-1}mk1 个。

本题答案:A

http://www.dtcms.com/a/446177.html

相关文章:

  • 网站建设首选玖艺建站信得过wordpress企业主题下载
  • TDengine 比较函数 IFNULL 用户手册
  • 【2026计算机毕业设计】基于jsp的毕业论文管理系统
  • 最小二乘问题详解3:线性最小二乘实例
  • OneData:数据驱动与AI落地的统一数据底座方法论——从规范到实践的全链路拆解
  • 与众不同的网站wordpress内容批量替换
  • 自己做网站要买什么微信制作网站设计
  • 笔记·线性回归(属于监督学习)
  • 同国外做贸易的网站怎么查看网站是用什么系统做的
  • 打印机专题
  • Vue 虚拟列表实现方案详解:三种方法的完整对比与实践
  • Oracle OCP认证考试题目详解082系列第48题
  • 第一章:单例模式 - 武林中的孤高剑客
  • sql题目基础50题
  • 哪些网站做的最好网站建设功能报
  • 第十三章:眼观六路,耳听八方——Observer的观察艺术
  • Kubernetes集群安全机制
  • 建站行业的发展趋势网站建设网络
  • AI大事记9:从 AlexNet 到 ChatGPT——深度学习的十年跃迁(下)
  • 网站收录了但是搜索不到全网霸屏推广系统
  • 张量分解 | CP / Tucker / BTD
  • 网站推广及建设ppt河北网站建设企业
  • 【数据结构】二叉搜索树的递归与非递归实现
  • 九亭镇村镇建设办官方网站1688接代加工订单
  • GJOI 9.27/10.3 题解
  • Python实例入门
  • 多线程核心知识点与高并发应用指南
  • 南宁网站建设nnxun政策变了2022二建有必要考吗
  • ASP3605电源芯片关键指标测试说明
  • Spring——事件机制