定义
- 度
- 节点度 $:=$ 子节点个数
- 树度 $m$ $:=$ 节点最大度数 aka. $m$ 叉树
- 满二叉树 := 度只有 0/2
- 完全二叉树 := 只可以最后一层不满
- 完美二叉树 := 所有层都满
- 线索二叉树
- 最优二叉树
性质
-
节点与度数
- 树节点 $n$ = 度数和 + 1
- 高度为 $h$ 的 $m$ 叉树总结点数 $n$ $\le$ $\frac{m^{h}-1}{m-1}$
- $m$ 叉树
- 第 $i$ 层节点数 $\le$ $m^{i-1}$
- 节点 $i$ 的第 $j$ 个儿子 $= (i-1)m+j+1$
- 二叉树
- $n_{0}=n_{2}+1$
-
高度分析 $$\log_{m}(n(m-1)+1) \leq h \leq n-m+1 $$
- 节点为 $n$ 的 $m$ 叉树高度 $h$ $\ge$ $\log_{m}(n(m-1)+1)$ 由 $\frac{m^{h}-1}{m-1} \ge n$
- 节点为 $n$ 的 $m$ 叉树高度 $h$ $\le$ $n-m+1$ 构造只有根节点度数为 $m$,其余节点度数为 $1$ 故 $n$ 个节点只浪费 $m-1$ 个节点
-
遍历
- 给定 $n$ 个节点先序遍历求所有可能,等于出栈方案数 $\frac{1}{n+1}C_{2n}^{n}$ (卡特兰数)
- 遍历序列最后一个节点要考虑偏子树
- 线索树
- 后序线索树遍历要借助栈
- 是物理结构
应用
哈夫曼
- 前缀编码:左 0 右 1 只有叶结点
- 哈夫曼树
- 构造方法
- 每个点赋权值,构成权值集合 $S$
- 选权值最小的节点(子树) $a, b \in S$
- $S$
-=${a,b}$ - 构造最小二叉子树
val: a+blchild: archild: b - 把 $(a+b)$ 放回 $S$
- $S$
- 重复 2. 直到 $S=\emptyset$
- 性质
- 满
- $WPL=\sum$
leaf[i].val$\times$leaf[i].depth$=$ $\sum$ 分支节点权值
- 构造方法
- 哈夫曼编码
- 把出现频率作为权值
- 在哈夫曼上 左 $0$ 右 $1$
- 出现的越多编码长度越短
并查集
实验坑点
- 树不一定是二叉树
- 序号
1不一定是根节点