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就是合并和。
相关推荐
yyy(十一月限定版)2 小时前
016【入门】双端队列
数据结构·c++
白狐_7982 小时前
408数据结构:中缀转后缀与操作符栈容量——真题精讲
前端·javascript·数据结构
Iruoyaoxh3 小时前
数据结构排序
数据结构
HAYDENR4 小时前
数据挖掘如何实施?数据挖掘实施过程有哪些注意事项?
人工智能·数据挖掘
来一碗刘肉面5 小时前
图的基本操作
数据结构
TAICHIFEI6 小时前
光片显微镜海量3D图像重建/拼接软件全分类
3d·分类·数据挖掘
Mem0rin7 小时前
前缀和:一维与二维
数据结构·算法
鱼子星_7 小时前
【C++】stack和queue的应用及其模拟实现:适配器与容器适配器
数据结构·c++·笔记·stl
白狐_7987 小时前
408数据结构第6章:图——核心考点、算法对比与AOE网真题
数据结构·算法