最近的,不一定是遍历出来的 —— 从「Closest K Values in BST」聊算法的“节制感”
作者:Echo_Wish
如果你刷过 LeetCode,看到这道题:
最接近的二叉搜索树值 II(Closest K Values in BST)
第一反应大概率是:
“不就是遍历 BST,找差值最小的 K 个数吗?”
说实话,我当年第一次看到也是这么想的。
但当你真正把这道题吃透,会发现它背后藏着一个非常重要的算法思想:
不是所有问题,都值得你把整棵树“翻个底朝天”。
一、问题先别急着解,先“看清楚”
题目本身很朴素:
- 给你一棵二叉搜索树(BST)
- 给你一个目标值
target - 要你找出最接近 target 的 K 个节点值
注意几个关键词:
- BST(不是普通二叉树)