【数据结构与算法】二叉树的性质 详解

在二叉树的第i层上至多有多少个结点。

在二叉树的第 i 层上至多有 2 i − 1 2^{i-1} 2i−1 个结点(i≥1)。

深度为 K的二叉树至多有多少个结点。

深度为 k 的二叉树上至多含 2 k − 1 2^k - 1 2k−1 个结点(k≥1)。

在一颗二叉树中, 其叶子结点数n0和度为二的结点数n2之间的关系。

对任何一棵二叉树T,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式: n 0 = n 2 + 1 n0 = n2 + 1 n0=n2+1。

有n个结点的完全二叉树的深度。

具有 n 个结点的完全二叉树的深度为 ⌊ log ⁡ 2 n ⌋ + 1 \lfloor \log_2 n \rfloor + 1 ⌊log2n⌋+1 或 ⌈ log ⁡ 2 ( n + 1 ) ⌉ \lceil \log_2 (n+1) \rceil ⌈log2(n+1)⌉。

在二叉树的顺序存贮结构中如何求结点的双亲、孩子?

若对含 n n n 个结点的完全二叉树从上到下且从左至右进行 1 1 1 至 n n n 的编号,则对完全二叉树中任意一个编号为 i i i 的结点:

  1. 若 i = 1 i=1 i=1,则该结点是二叉树的根,无双亲;否则,编号为 ⌊ i / 2 ⌋ \lfloor i/2 \rfloor ⌊i/2⌋ 的结点为其双亲结点;
  2. 若 2 i > n 2i > n 2i>n,则该结点无左孩子,否则,编号为 2 i 2i 2i 的结点为其左孩子结点;
  3. 若 2 i + 1 > n 2i+1 > n 2i+1>n,则该结点无右孩子结点,否则,编号为 2 i + 1 2i+1 2i+1 的结点为其右孩子结点。

有n个结点的二叉树用二叉链表存贮时有多少个空链域。

使用二叉链表存储时,每个节点有两个链域(左孩子和右孩子)。在完全二叉树中,叶子节点的数量比非叶子节点的数量多1,所以空链域的数量是n+1。

用三叉链表存贮时有多少个空链域。

使用三叉链表存储时,每个节点有三个链域(左孩子、右孩子和父节点)。除了二叉链表的空链域之外,还有一个根节点的父节点链域是空的,所以空链域的数量是n+2。

相关推荐
a18792721831几秒前
【算法】动态规划第三篇:背包第一课——贪心之死与正序倒序开关
算法·leetcode·动态规划·贪心·dp·暴力·算法讲解
hope_wisdom3 分钟前
C/C++数据结构之二叉树的遍历
c语言·数据结构·c++·二叉树·深度优先·广度优先
黄金龙PLUS10 分钟前
Xoodoo置换算法的优缺点
算法·网络安全·密码学·哈希算法·同态加密
LayZhangStrive42 分钟前
数据结构与算法 - 堆排序
java·数据结构·算法·排序算法·堆排序·大根堆
residual_fan1 小时前
深度渐进收缩学习(DPSL):面向强噪声与类内分散的机械复合故障诊断方法
人工智能·算法·数据挖掘·数据分析
leikooo1 小时前
ARTS 0906: 辅助栈记录每层最小值、OSI 模型从未真正落地与与其被动等待被颠覆不如主动设计规则
数据结构·人工智能·tcp/ip
a187927218312 小时前
【算法】动态规划第五篇:区间 DP——从“看什么都像背包“到“最后戳谁“
算法·leetcode·动态规划·dp·区间·区间dp·算法讲解
whitelbwwww2 小时前
c++ 多线程
开发语言·c++·算法
额鹅恶饿呃2 小时前
随着CentOS官方停服的时间越来越久,大量仍在使用CentOS7的企业和运维从业者
java·python·算法·c#·ruby
不会就选b2 小时前
数据结构之数&&二叉树(一)
数据结构