Py算法与数据结构

09 二叉搜索树

按键搜索、插入、删除与中序有序

对应本节 12 道题。点击题目展开答案和理由,保留此前生成的详细解析。
第 01 题 问题 1

BST 的顺序规则只检查直接孩子就足够吗?

参考答案

不够,整个左子树键更小、右子树键更大(本章唯一键约定)。

解析

更深后代也受祖先范围约束。

第 02 题 问题 2

插入 [8,3,10,1,6] 后搜索 6,比较路径是什么?

参考答案

8 → 3 → 6。

解析

6<8 向左,6>3 向右,再命中。

第 03 题 问题 3

该树中序遍历结果?

参考答案

[1,3,6,8,10]。

解析

左、根、右配合 BST 顺序规则得到升序键。

第 04 题 问题 4

教材重复键插入采用什么规则?

参考答案

更新对应记录/值,不再新增同键节点。

解析

唯一键字典语义;允许重复的树需另外定义策略。

第 05 题 问题 5

删除叶节点需要什么连接变化?

参考答案

把父节点对应孩子引用设为 None;若它是根则更新根。

解析

叶没有子树需要接回。

第 06 题 问题 6

删除只有一个孩子的节点,如何保留剩余结构?

参考答案

让其父引用(或根)直接指向唯一孩子。

解析

不能只清空目标节点而丢掉整棵孩子子树。

第 07 题 问题 7

删除有两个孩子的节点,可以选哪条后继记录?

参考答案

右子树的最小记录,即中序后继。

解析

把后继完整键/负载替换到目标,再删除原后继位置。

第 08 题 问题 8

替换目标键时只改 key、不改关联 value,有什么风险?

参考答案

键与记录负载错配。

解析

应移动完整记录或同时更新相关字段。

第 09 题 问题 9

按 [1,2,3,4,5] 顺序插入普通 BST,形状和查找最坏成本如何?

参考答案

可能形成向右的链,最坏 O(n)。

解析

BST 有序关系不自动保证树高为对数。

第 10 题 问题 10

BST 搜索、插入、删除的路径成本一般写成什么?

参考答案

O(h),h 为树高。

解析

均衡时 h=O(log n),退化时 h=O(n)。

第 11 题 问题 11

BST 相对哈希表在什么查询上有优势?

参考答案

按序遍历、范围查询、最小最大、前驱后继。

解析

哈希表天然偏向按键定位,迭代不是按键大小排序。

第 12 题 问题 12

如何验证整棵 BST 规则而不只看直接孩子?

参考答案

递归传递允许的上下界,或检查中序严格递增(唯一键约定)。

解析

上下界由所有祖先累积,能发现深层越界。