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

数据结构:严格二叉树 (Strict Binary Tree)

目录

什么是严格二叉树?(Definition)

重要术语说明

严格二叉树的高度 vs 节点数

已知高度 h,节点数 n 的范围

严格二叉树的内部节点 vs 外部节点

推导方法一:利用通用性质

推导方法二:从零开始的归纳法


这次我们来探讨一种特殊的、结构更规整的二叉树——严格二叉树 (Strict Binary Tree)。它的性质非常优美和确定,是很多算法(比如哈夫曼编码树)的基础。

什么是严格二叉树?(Definition)

我们从二叉树的通用定义出发进行第一性推导。

  • 通用二叉树: 一个节点可以有 0 个、1 个或 2 个子节点。

  • 这种定义非常灵活,但也带来不确定性。其中最“不规整”的情况就是一个节点只有1个子节点。如果我们想让树的结构更“对称”或“确定”,最直接的方法就是去掉这种中间状态。

  • 推导出的新规则: 我们不允许节点有1个子节点。那么,一个节点只剩下两种可能:

    1. 它没有子节点(成为叶子节点)。

    2. 它有2个子节点。

一个严格二叉树 (Strict Binary Tree) 是指树中的每一个节点要么是叶子节点(度为0),要么拥有两个子节点(度为2)。不存在度为1的节点。

重要术语说明

这个概念在不同的书籍里有不同的叫法,很容易混淆,这里特别为你澄清:

  • Strict Binary Tree (严格二叉树): 我们今天讨论的主角。

  • Proper Binary Tree2-tree: 也是指严格二叉树。

  • Full Binary Tree: 在很多经典的英文教材(如《算法导论》)中,"Full Binary Tree" 就是指严格二叉tree。

  • 但是,在国内很多教材中,"满二叉树" 指的是一种更完美的树——完美二叉树 (Perfect Binary Tree),即所有叶子都在同一层且所有非叶子节点都有2个孩子。

  • 为了避免混淆,我将统一使用“严格二叉树”这个最准确的术语。


严格二叉树的高度 vs 节点数

现在,我们在“严格”这个新约束下,重新审视高度和节点数的关系。

已知高度 h,节点数 n 的范围

A. 最大节点数 n_max

                ●/     \●         ●/   \     /   \●      ●  ●       ●/ \    / \ / \    / \●  ●  ●   ● ●  ●  ●   ●

第一性原理: 要想在高度为 h 的限制下容纳最多节点,我们依然要把所有位置都填满。

  • 一个把所有位置都填满的树(完美二叉树),其所有内部节点的度都为2,所有叶子节点都在最底层。它天然就满足“严格二叉树”的定义。

  • 因此,严格二叉树的最大节点数和普通二叉树的完全一样。

B. 最小节点数 n_min

第一性原理: 在必须达到高度 h 的前提下,使用最少的节点,并且还要遵守“要么0个孩子,要么2个孩子”的规则。

    ●/ \●   ●
    ●/ \●   ●/ \
●   ●
  • 推导:

    • h=0:   只有1个根节点。它是叶子。n=1。

    • h=1:   为了达到高度1,根节点必须有孩子。根据严格定义,它不能有1个,必须有2个。这两个孩子都是叶子。所以节点数 = 1(根) + 2(孩子) = 3。

    • h=2:   为了达到高度2,我们必须在高度为1的“最瘦”严格树(3个节点)的基础上,让其中一个叶子节点“生”出孩子。

    • 我们选择一个叶子(比如左孩子),让它长出2个子节点(它们成为新的叶子)。

      • 节点数 = 1(根) + 2(第一层) + 2(第二层) = 5。

    • 发现规律: 我们发现,要让高度增加1,我们必须选择一个最深层的叶子节点,把它变成一个内部节点,并给它分配2个新的叶子节点。这个过程让总节点数增加了2。

    • 这个过程形成了一个等差数列:1, 3, 5, 7, ...

    • 其通项公式为:

结论: 高度为 h 的严格二叉树,最少有 2h+1 个节点。


严格二叉树的内部节点 vs 外部节点

这是一个非常优美的性质,也是严格二叉树最重要的特性之一。

  • 内部节点 (Internal Node): 非叶子节点。在严格二叉树中,就是指那些有2个子节点的节点。

  • 外部节点 (External Node): 叶子节点。

我们来寻找二者数量上的关系。设 I 为内部节点数,E 为外部节点(叶子)数。

推导方法一:利用通用性质

  1. 我们在之前的文章中推导过一个适用于所有二叉树的普适公式:n_0 = n_2 + 1。

    • n_0 是度为0的节点数(叶子节点)。

    • n_2 是度为2的节点数。

  2. 现在我们把这个公式应用到严格二叉树的场景中:

    • 根据定义,外部节点 E 就是叶子节点,所以 E=n_0。

    • 根据定义,内部节点 I 就是那些度为2的节点,所以 I=n_2。

    • 严格二叉树中没有度为1的节点,即 n_1=0。

  3. 将 E 和 I 代入通用公式 n_0=n_2+1,直接得到:E = I + 1


推导方法二:从零开始的归纳法

这种方法更直观,能让你“看到”这个关系是如何形成的。

  1. 基础情况: 最小的非空严格二叉树是什么?是一个单独的根节点。

    • 此时,它是一个叶子节点。

    • 内部节点数 I=0。

    • 外部节点数 E=1。

    • 关系 E=I+1 成立 (1=0+1)。

  2. 生长过程: 如何从一棵严格二叉树得到一棵更大的严格二叉树?

    ●(I)/   \●(E)  ●(E)

我们必须选择一个外部节点(叶子),然后给它加上两个子节点。

    ●(I)/   \●(I)  ●(E)/ \
●(E) ●(E)

这个操作会带来什么变化?

  • 被选中的那个外部节点,不再是叶子了,它变成了内部节点

    • 所以 E 的数量减 1。

    • 所以 I 的数量加 1。

  • 它新长出的两个子节点,成为了新的外部节点(叶子)。

    • 所以 E 的数量再加 2。

  • 我们来计算一下 EI 的净变化量:

    • I 的净变化: +1。

    • E 的净变化: −1 + 2 =+ 1。

再生长一次(选择右边的叶子):

    ●(I)/   \●(I)  ●(I)/ \   / \
●(E)●(E)●(E)●(E)

变化分析:

  • I: 2 → 3(+1)

  • E: 3 → 4(-1 + 2 = +1)

  • N: 5 → 7(+2)

  • 关系 E = I + 1 继续成立 ✅

归纳结论: 我们从一个满足 E = I + 1 的基础状态开始,每一步生长操作,都同时给 EI 增加1。

这意味着,无论这棵树如何生长,它们之间的差值将永远保持不变。

  • E_new = E_old + 1

  • I_new = I_old + 1

  • 因此,E_new − I_new = (E_old + 1) − (I_old + 1) = E_old − I_old = 1。

  • 这个关系 E = I + 1 永远成立。

一个有趣的推论:

树的总节点数 N = I + E。 将 E = I + 1 代入,得 N = I + ( I + 1) = 2I + 1 。 这意味着,任何非空严格二叉树的总节点数永远是奇数。

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

相关文章:

  • 【Twincat3】IO的SCAN 不可选中,SCAN中后扫描不到设备
  • RH134 管理存储堆栈知识点
  • 第20章 LINQ 笔记
  • Akka的容错机制,监督策略与熔断器的区别
  • 【时时三省】(C语言基础)共用体类型
  • 深度解析 DDoS 攻击:运作机制与防御体系构建​
  • 金融项目高可用分布式TCC-Transaction(开源框架)
  • 01数据结构-拓扑排序
  • Go语言实战案例:静态资源服务(CSS、JS、图片)
  • 迁移学习的常见研究领域(附有相关资料)
  • Kubernetes(2)pod的管理及优化
  • 数据结构初阶(17)排序算法——非比较排序、排序算法总结
  • LintCode第107题-单词拆分-新版
  • 国产操作系统之openEuler:根深叶茂
  • 力扣习题:基本计算器
  • 通过CANopen 配置闭环驱动器C5-E——易格斯igus
  • platform总线注册流程分析
  • CUDA 编程笔记:使用 CUDA 加速数组总和
  • 102、【OS】【Nuttx】【周边】文档构建渲染:安装 Esbonio 服务器
  • 【JavaEE】多线程 -- 死锁问题
  • linux服务器查看某个服务启动,运行的时间
  • 如何将 iPhone 应用程序传输到新 iPhone?
  • C++ rapidjson库使用示例
  • 【慕伏白】CTFHub 技能树学习笔记 -- Web 前置技能之HTTP协议
  • Vue 侦听器(watch 与 watchEffect)全解析3
  • 【ESP32】ESP32-P4 通过 SDIO 连接 ESP32-C6
  • FCC认证三星XR头显加速全球量产,微美全息AI+AR技术引领智能眼镜硬件创新
  • webgis-maps通用地图框架库(leaflet+mapbox)
  • 《探秘浏览器Web Bluetooth API设备发现流程》
  • K8S-Pod资源对象