二叉堆可视化工具
交互式二叉最大堆(binary max-heap)——插入元素(insert)并取出最大值(extract-max),配合上浮(sift-up)/下沉(sift-down)动画,支持逐步执行和伪代码展示。完全在浏览器中运行。
伪代码
Run an operation to see its steps.
Avg · Worst
使用方法
- 1 输入一个数字并点击 Insert——观察它“上浮”到正确的位置。
- 2 点击 Extract Max 删除根节点,并观察堆的“下沉”过程。
- 3 使用 Random 插入一个随机值,或使用 Clear 清空整个堆。
- 4 对任意操作进行逐步执行,并跟随高亮显示的伪代码查看每一步。
为什么使用此工具
- 以树形图的方式查看二叉最大堆,最大值始终位于根节点。
- 观察插入后的上浮(sift-up)和取出后的下沉(sift-down)如何恢复堆的性质。
- 理解为什么插入和取出操作的时间复杂度都是 O(log n)——恰好等于树的高度。
- 完全在你的浏览器中运行,无需注册,也无需上传任何数据。
常见问题
什么是二叉堆(binary heap)?
二叉堆是一种以数组形式存储的完全二叉树,其中每个父节点都满足堆的性质。在最大堆(max-heap)中,每个父节点都大于等于其子节点(因此最大值位于根节点);在最小堆(min-heap)中,每个父节点都小于等于其子节点。
堆操作的时间复杂度是多少?
插入(insert)和取出最大值(extract-max)的时间复杂度都是 O(log n)——因为一个值上移或下移的距离最多等于树的高度。而查看最大值只需要 O(1)。
堆是如何用数组存储的?
这棵树是以隐式方式表示的:索引为 i 的节点,其子节点位于 2i+1 和 2i+2,父节点位于 ⌊(i−1)/2⌋。完全不需要使用指针。
堆有什么用途?
常用于优先队列(priority queue)、堆排序(heap sort)、Dijkstra 算法和 Prim 算法,以及任何需要不断取出当前最大值(或最小值)的场景。
什么是 二叉堆可视化工具?
二叉堆可视化工具展示的是一个二叉最大堆——一种以数组形式存储的完全二叉树,其中每个父节点的值都大于或等于其子节点。工具会呈现插入后的上浮(sift-up)过程,以及取出最大值后的下沉(sift-down)过程,确保最大值始终位于根节点。
功能特性
Insert / extract / peek
动画演示 insert 时的 sift-up 以及 extract 根节点时的 sift-down。
复杂度
insert / extract:O(log n)。peek:O(1)。build-heap:O(n)。空间复杂度:O(n)。
100% 隐私保护
完全在你的浏览器中运行——不会上传任何数据。
示例
Input
insert 5, 3, 8, 1, 4 (min-heap)
Output
heap array = [1, 3, 8, 5, 4] (root = min = 1)
常见使用场景
-
1
优先队列
查看支撑高效优先队列的堆结构。
-
2
堆排序与 Dijkstra 算法
理解堆排序和 Dijkstra 算法所使用的数据结构。
-
3
学习 sift-up/sift-down
观察每次操作后堆性质是如何被恢复的。
Zerethon 的二叉堆可视化工具可在浏览器中动态演示最小堆或最大堆,展示 insert(上浮 sift-up)与 extract(下沉 sift-down)操作如何在完全二叉树中恢复堆性质。insert 和 extract 的时间复杂度为 O(log n),peek 为 O(1),从数组构建堆为 O(n);空间复杂度为 O(n)。
- 分类
- 算法
- 价格
- 免费
- 隐私
- 基于浏览器
- 注册
- 无需
参考资料
- MIT OCW 6.006 — Introduction to Algorithms (CLRS) — MIT OpenCourseWare
- VisuAlgo — Binary Heap — VisuAlgo (NUS)
- Binary heap — Wikipedia
隐私
除非另有说明,否则你的数据永远不会离开浏览器。二叉堆可视化工具 完全在客户端运行 — 无需上传服务器,不记录日志,不追踪你输入的内容。
刚接触?阅读包含 Big-O 分析的分步讲解: 了解 Data Structures →
在 Zerethon Social 上创作、分享与成长
免费注册。赚取积分,收集成就,与全球创作者建立联系。