【数据结构】树&&堆

【数据结构】树 && 堆 —— 面试/学习核心对比总结(2026版)

树(Tree)和堆(Heap)都是非线性层次结构,但设计目标、约束、操作效率和应用场景完全不同。下面用表格 + 关键点帮你建立清晰的全域认知。

1. 核心对比表(树 vs 堆)

维度树(通用 Tree / Binary Tree)堆(Heap,通常指 Binary Heap)关键差异点说明
定义由节点和边组成的有层次、无环结构(一个根,多个子节点)特殊的完全二叉树,满足堆序性(父 ≥/≤ 所有子)堆是树的子集,必须是完全二叉树 + 堆序性
形状约束可以任意形状(不平衡、退化成链表)必须是完全二叉树(除了最后一层,其它层满,最后一层左对齐)堆的形状保证了高度始终 ≈ log n
值序约束可有序(如 BST:左 < 父 < 右)或无序强约束:父节点 ≥(大顶堆)或 ≤(小顶堆)所有子节点堆不要求左右子节点间有序,只关心父子关系
典型实现方式节点类(left/right/child[])或数组模拟数组实现(下标从1开始,i的左孩子2i,右2i+1,父i/2)堆用数组实现更节省内存、无需指针
高度最好 O(log n),最坏 O(n)(退化)始终 O(log n)堆操作稳定高效
主要目标灵活组织数据,支持高效搜索/插入/删除(平衡树)快速获取极值(最大/最小),支持高效入/出队树偏搜索/有序,堆偏极值/优先级
常见操作时间复杂度见下表见下表

2. 常见树类型 vs 堆的操作复杂度对比

操作 / 类型普通二叉树二叉搜索树 (BST)AVL/红黑树(平衡)二叉堆 (Binary Heap)备注 / 面试重点
查找/访问根(peek)O(1) ~ O(n)O(log n) ~ O(n)O(log n)O(1)堆获取极值最快
插入O(1) ~ O(n)O(log n) ~ O(n)O(log n)O(log n)堆:上浮调整
删除任意节点O(1) ~ O(n)O(log n) ~ O(n)O(log n)O(log n)(通常只删根)堆删根:下沉调整
删除最大/最小O(n)O(log n) ~ O(n)O(log n)O(log n)堆核心优势
建结构(n个元素)O(n)O(n log n)O(n log n)O(n)(最优建堆)堆建堆神器
获取第 k 大/小O(n)O(n)O(n)O(k log n) 或 O(n)堆 + TopK 经典
空间复杂度O(n)O(n)O(n)O(n)堆数组实现更省

最优建堆 O(n) 证明:从最后一个非叶子节点开始逐个下沉调整,数学上可证总操作量 ≈ 2n,不是 n log n。

3. 堆 vs 普通树的本质区别(面试常问)

  • 堆 ≠ 有序树
    堆只保证根是最大/最小,不保证中序遍历有序(不像 BST)。
  • 堆为什么用数组实现更高效?
    完全二叉树 + 连续存储 → 无需指针,缓存友好,计算父子关系只需乘除2。
  • 为什么堆适合优先队列,而 BST 不行?
    BST 插入/删除可能退化,平衡树虽稳定但实现复杂;堆形状固定,操作稳定 O(log n),建堆 O(n),极值 O(1)。
  • 堆排序为什么是 O(n log n)?
    建堆 O(n) + n 次出堆(每次 O(log n)) → O(n) + O(n log n) = O(n log n)。

4. 常见应用场景对比(背下来)

树(各种)

  • 文件系统 / 目录树
  • DOM 树、语法分析树
  • 数据库索引(B+树、B树)
  • 决策树、Huffman 编码树
  • Trie(前缀树)、后缀树
  • 平衡树(map/set 的底层)

堆(Binary Heap)

  • 优先队列(任务调度、Dijkstra、Prim)
  • Top K 问题(第 k 大 / 小元素)
  • 堆排序(不稳定但原地)
  • 中位数维护(两个堆:大顶 + 小顶)
  • 滑动窗口最大值(单调队列的变种实现)
  • 一些图算法的辅助结构

5. 快速记忆口诀(面试背这个)

  • 树 → “灵活家族树”:可搜、可序、可平衡,形状随意,操作看平衡度
  • 堆 → “极值快递站”:完全二叉 + 父强于子,极值秒拿,数组实现,O(log n) 进出

一句话总结:

树是通用层次结构,追求灵活查询与有序;堆是特化完全二叉树,追求极值快速获取与高效维护。

如果你想深入某个部分(比如手写二叉堆的向上/向下调整、TopK 用堆实现代码、红黑树 vs 堆区别、B+树 vs 堆),或者需要 LeetCode 对应题型推荐,直接告诉我,我继续展开~

文章已创建 4725

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部