数据结构 | 树与二叉树常用计算公式

在二叉树的理论推导以及一些高频类型题中,我们经常需要计算二叉树的总结点数,某一层的结点数以及已知结点数反推树的高度,本文围绕这几个高频知识点,归纳总结以下公式。

公式#

(1)非空二叉树叶子结点数 = 度为2的结点数 + 1 即,N0=N2+1

(2)非空二叉树上第K层至多有2k1 个结点(K1

(3)高度为H的二叉树至多有2H1 个结点(H1

(4)具有N个(N>0)结点的完全二叉树的高度为 log2(N+1)log2N+1

(5)对完全二叉树按从上到下、从左到右的顺序依次编号1,2,...,N,则有以下关系:

① 当 i>1 时,结点 i 的双亲结点编号为 i/2 ,即当 i 为偶数时,其双亲结点的编号为 i/2 ,它是双亲结点的左孩子;当 i 为奇数时,其双亲结点的编号为 (i1)/2 ,它是双亲结点的右孩子。

② 当 2iN 时,结点i的左孩子编号为 2i ,否则无左孩子。

③ 当 2i+1N 时,结点i的右孩子编号为 2i+1 ,否则无右孩子。

④ 结点 i 所在层次(深度)为 log2i+1 。(设根结点为第1层)

经典例题#

Copy
**408考研-2011-4** 若一棵完全二叉树有768个结点,则二叉树中叶结点的个数是_____。 A.257 B.258 C.384 D.385

解法1#

根据完全二叉树的性质,最后一个分支结点的序号为 n/2=768/2=384 ,故叶子结点的个数为 768384=384

解法2#

由二叉树的性质 N=N0+N1+N2N0=N2+1 可知

N=2N01+N12N01+N1=768

显然,N1=12N0=768N0=384

解法3#

完全二叉树的叶子结点只可能出现在最下两层,由题可计算完全二叉树的高度为10。

第10层的叶子结点数为 768(291)=257

第10层的叶子结点在第9层共有 257/2=129 个父节点

第9层的叶子结点数为 (291)129=127

则叶子结点总数为 257+127=384

posted @   JasonCeng  阅读(11719)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
CONTENTS