任务概览
在
better_bst.py 中扩展 BinarySearchTree,实现三个递归方法:range_query(low, high):区间查询
balance_score():计算平衡度
rebalance():重构为平衡树
Task 1.2 - Balance Score
⚖️ 目标:
衡量 BST 的平衡程度。
定义:
平衡度 = 实际高度 − 理想高度
其中理想高度 = ⌈log₂(n + 1)⌉
思路:
- 用递归求树的实际高度(左右子树取最大深度);
- 计算节点总数;
- 根据公式求平衡度差值。
伪代码:
📈 时间复杂度: O(n)
Task 1.3 - Rebalancing the BST
目标:
将任意不平衡的 BST 重新构建为平衡树。
思路:
- 通过中序遍历获得有序节点列表(保持键的顺序);
- 取中点作为新根,递归构建左右子树;
- 最后替换原树根。
伪代码:
📈 时间复杂度: O(n)