树、二叉搜索树与堆
数据结构与算法基础#Python全栈#第五阶段#数据结构与算法基础#树、二叉搜索树与堆约 551 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
树的根、叶子、父子节点、深度和高度分别是什么?
追问 高度按边数还是节点数计算,应怎样在接口中明确?
二叉树与二叉搜索树有什么区别?
追问 左小右大的约束作用于直接子节点还是整棵子树?重复值如何约定?
前序、中序与后序遍历的访问顺序是什么?
追问 如何用一棵小树演示?递归与显式栈分别怎样记录待处理节点?
如何用队列实现二叉树层序遍历?
追问 如果按层分组返回,如何划定一层的节点数量?额外空间与什么有关?
如何计算二叉树的最大深度?
追问 空树、单节点与退化树如何处理?递归深度过大怎么办?
二叉搜索树查找是否一定是 O(log n)?
追问 平衡与退化树各有什么复杂度?顺序插入可能形成什么结构?
堆与已排序列表有什么区别?
追问 堆顶有序是否代表全部元素有序?为什么不能直接对堆列表做二分查找?
如何使用 heapq 管理最小堆?
追问 heapify、heappush 与 heappop 分别做什么,批量建堆与逐个插入如何分析?
如何使用大小为 k 的堆寻找前 k 个最大值?
追问 为什么可以使用最小堆?k 为零、大于输入长度与重复值时怎样约定?
如何设计任务优先队列,兼顾相同优先级的提交顺序?
追问 加入递增序号如何避免比较不可排序的任务对象?优先级更新要如何处理旧记录?
堆工具可参考 Python 官方 heapq 文档,使用时明确结果顺序与重复值规则。