408数据结构第5章:树与二叉树③——公式分类速查

用途:考前快速查公式。看到题型后直接定位公式。


一、普通树

边数

复制代码
e = n - 1

度数总和

复制代码
Σ(结点度数) = n - 1

按度分类:

复制代码
n0+n1+n2+... = n
1*n1+2*n2+3*n3+... = n-1

普通树叶子数

复制代码
n0 = 1 + Σ(i-1)*ni    (i>=2)

展开:

复制代码
n0 = 1+n2+2n3+3n4+...

二、二叉树

核心公式

复制代码
n0 = n2 + 1

适用:

复制代码
任何非空二叉树

三、层数与结点数

默认根为第1层。

第k层最多

复制代码
2^(k-1)

高度h最多

复制代码
2^h - 1

普通二叉树高度h最少

复制代码
h

四、满二叉树

高度为h:

复制代码
总结点 = 2^h - 1
叶子 = 2^(h-1)
内部结点 = 2^(h-1)-1

五、完全二叉树

高度

复制代码
h = floor(log2 n)+1

等价:

复制代码
2^(h-1) <= n <= 2^h-1

高度h时结点范围

复制代码
最少:2^(h-1)
最多:2^h-1

叶子数

复制代码
ceil(n/2)

最后一个非叶子结点编号

复制代码
floor(n/2)

度为1结点数

复制代码
n为奇数 -> n1=0
n为偶数 -> n1=1

六、完全二叉树顺序编号

从1开始编号。

编号为i:

复制代码
父:floor(i/2)
左孩子:2i
右孩子:2i+1

叶子编号:

复制代码
floor(n/2)+1 ... n

七、二叉链表空指针

n个结点:

复制代码
总指针域 = 2n
非空孩子指针 = n-1
空指针 = n+1

八、遍历

复制代码
先序:根 左 右
中序:左 根 右
后序:左 右 根
层序:队列

根的位置:

复制代码
先序第一个 = 根
后序最后一个 = 根

重建:

复制代码
先序+中序 -> 一般唯一
后序+中序 -> 一般唯一
先序+后序 -> 一般不唯一

九、树与森林转二叉树

复制代码
左孩子,右兄弟

遍历对应:

复制代码
树先根 = 二叉树先序
树后根 = 二叉树中序

森林先序 = 对应二叉树先序
森林中序 = 对应二叉树中序

十、哈夫曼树

构造

复制代码
每次选当前最小的两个权值合并

WPL

复制代码
WPL = Σ(叶子权值 × 路径长度)

快速算法:

复制代码
WPL = 所有合并产生的新权值之和

结点数量

n个叶子:

复制代码
内部结点 = n-1
总结点 = 2n-1

平均码长

概率形式:

复制代码
L = Σ(pi * li)

频数形式:

复制代码
L = Σ(wi * li) / Σwi

十一、严格m叉树

若每个非叶结点都有m个孩子:

复制代码
n0 = (m-1)*nm + 1

其中:

复制代码
n0:叶子数
nm:度为m的结点数

十二、Catalan数(低频)

n个结点能组成多少种不同二叉树形态:

复制代码
Cn = (1/(n+1)) * C(2n,n)

前几项:

复制代码
1, 1, 2, 5, 14, 42...

优先级低于完全二叉树、叶子公式和哈夫曼。


十三、题型 -> 公式映射

给度为2结点数,求叶子

二叉树:

复制代码
n0=n2+1

普通树:

复制代码
n0=1+Σ(i-1)ni

完全二叉树给n求高度

复制代码
floor(log2 n)+1

完全二叉树给n求叶子

复制代码
ceil(n/2)

给编号i求父与孩子

复制代码
父 floor(i/2)
左 2i
右 2i+1

问二叉链表空指针

复制代码
n+1

给权值求最小WPL

复制代码
反复合并当前最小两个值
WPL=所有合并值之和

给先序+中序还原

复制代码
先序第一个找根
中序按根切左右
递归

十四、公式优先级

第一优先级:必须秒出

复制代码
e=n-1
n0=n2+1
第k层最多2^(k-1)
高度h最多2^h-1
完全二叉树高度floor(log2 n)+1
完全二叉树叶子ceil(n/2)
父floor(i/2),左2i,右2i+1
空指针n+1

第二优先级:必须会用

复制代码
普通树叶子公式
遍历还原
树/森林转二叉树
哈夫曼WPL
哈夫曼总结点2n-1

第三优先级:了解

复制代码
Catalan数
严格m叉树计数

十五、10秒背诵版

复制代码
树有n点n-1边;
二叉叶子比二度多1;
第k层最多2^(k-1),h层最多2^h-1;
完全树高log下取整加1,叶子上取一半;
父除2,左乘2,右乘2加1;
二叉链表空指针n+1;
哈夫曼两小合并,WPL就是合并和。
相关推荐
空堂与归3 小时前
图像识别总是准确率低?用卷积神经网络CNN实现高效分类
人工智能·深度学习·分类·cnn
带多刺的玫瑰6 小时前
Leecode#9刷题之回文数
数据结构·算法
萌动的小火苗6 小时前
数据结构面试题【无答案】
c语言·开发语言·数据结构·链表
十三画者7 小时前
【文献分享】PANORAMIC:用于空间组学共定位分析的分层不确定性传播框架
人工智能·深度学习·数据挖掘·数据分析·集成学习
tianyu2349 小时前
HashMap 灵魂 30 问:从数据结构到红黑树,从扩容到 ConcurrentHashMap,一篇彻底通关
数据结构·hashmap·hashset·linkedhashmap‌
_Narcissus_12 小时前
分治&递归
数据结构·c++·笔记·算法·leetcode·递归·分治
不灭的黄金瞳12314 小时前
C语言实现单链表
c语言·数据结构
YOLO数据集集合16 小时前
蚊子视觉验证数据集 | 蚊虫识别 疟疾防控 病媒生物 细粒度分类 YOLO格式 深度学习数据集
深度学习·yolo·分类·数据集·蚊子分类·蚊虫分类·蚊虫识别
这是程序猿16 小时前
深入剖析Java HashMap:底层原理、数据结构与核心机制全解析
java·开发语言·数据结构
HanhahnaH17 小时前
各数据结构操作的时间复杂度汇总
数据结构·算法