跳转至

树与二叉树

树的基本概念

树的定义与基本术语

  1. 树的任何节点有且仅有一个前驱(除了根节点),不然就是图。

image-20260404204805540

树的性质

image-20260404205841648

考点3:m^(i - 1)

**考点4:m^0 + m^1 + ... + m^(h - 1) = (等比数列求和) (m^h - 1) / (m - 1) **

考点5:

  • 高度为h的m叉树至少有h个节点(每一层一个节点)
  • 高度为h的度为m的树至少有h + m - 1(一层为m,其他都为1)

考点6:

image-20260404211152262

  1. 树的节点数为n,那么树的边数为n - 1(一个节点除了根节点都只有一个前驱)。

二叉树的基本概念

二叉树的定义与基本术语

  1. 满二叉树和完全二叉树的特点

image-20260406204451734

  1. 二叉排序树图示

image-20260406204727155

总结:image-20260406204402323

二叉树的性质

  1. 完全二叉树考点二

image-20260406205619297

总结:image-20260406204923970

二叉树的存储结构

  1. 二叉树的顺序存储

image-20260406210154572

一个分支节点i的左孩子编号要满足:2i <= n 即 i <= (n / 2),向下取整。

  1. 非完全二叉树

image-20260406210225233

  1. 二叉树的链式存储

image-20260406210338929

n - 1个指针是指向前驱的,那么剩下的2n - n + 1 = n + 1是指向空的

  1. 二叉树的初始化

image-20260406210524063

习题笔记

  1. m叉树

  2. 节点i的双亲节点编号

image-20260407200117841

注意: i > 1,因为根节点没有父节点

二叉树的遍历与线索二叉树

二叉树的先中后序遍历

image-20260407203914123

二叉树的层次遍历

image-20260407205138273

由遍历序列构造二叉树

image-20260407205226472

线索二叉树的概念

  1. 此处的前驱和后继指的是遍历序列中的前驱后继,而不是节点的父节点和子节点。

总结:

image-20260407205701408

二叉树的线索化

image-20260407211143368

二叉树的线索化

image-20260407213458205

主要现推,理解为主

image-20260407213611396

习题笔记

  1. n个节点的线索二叉树上含有的线索数量为 n + 1,因为一共有 2n 个指针域,除了根节点每个节点都有一条前驱,所以一共用了 n - 1 个指针,所以剩下的 n + 1 个空闲指针就用做线索。
  2. 后序线索树的遍历仍需要栈的支持。

  3. 因为后序线索树找后继需要回到父节点

  4. 卡特兰数

对于 \(n\) 个节点能构成的不同形态二叉树的个数 \(C_n\):

\[C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{(n+1)!n!}\]

三大等价考点(答案均为 \(C_n\))

在考试中,看到以下表述本质都是求卡特兰数:

  1. 二叉树形态计数: 给定 \(n\) 个节点,求能构成多少种不同形态的二叉树。
  2. 出栈序列计数: 元素按固定顺序入栈(如 \(1, 2, ..., n\)),求合法的出栈序列总数。
  3. 遍历序列映射: 已知前序序列(入栈顺序),求可能的中序序列(出栈顺序)个数。

树与森林

树的存储结构

image-20260420192124938

树、森林与二叉树的转换

image-20260420193233995

树和森林的遍历

image-20260420194443556

课后习题总结

  1. 设F是一个森林,B是由F变换来的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有n + 1个。

  2. 每一个非终端结点都有一个最后孩子,而这个孩子没有右兄弟,因此他在F中的右指针一定为空,因此有n个

  3. 假设B中m棵树,最后一颗树的根节点因为没有右兄弟,所以在F中右指针一定为空
  4. 相加即为n + 1

树与二叉树的应用

哈夫曼树

  1. 每个初始结点最终都成为叶结点,且权值越小的结点到根结点的路径长度越大
  2. 哈夫曼树的结点总数为2n - 1(初始n个结点,n - 1次合并,产生n - 1个结点,n + n - 1 = 2n - 1)
  3. 哈夫曼树中不存在度为1的结点
  4. 哈夫曼树不唯一,但WPL必然相同且为最优

image-20260420195236980

并查集

image-20260420200745328

优化后树的高度不超过floor(log n) + 1

并查集的进一步优化

image-20260420202045749

本质都是让树的高度降低

image-20260420202322642

课后习题笔记

  1. 度为m的哈夫曼树中只存在度为m和度为0的点。(若结点不够合并时,会补0权结点)
  2. 合并两个长度分别为m和n的有序表,最坏情况下需要比较m + n - 1次,交叉合并,最后某个有序表只剩一个元素,不用比较,所以 - 1。