Kth Smallest Element in BST

Binary Search Tree之所以被大家喜爱,就是因为它的结构很方便大家查找某一个元素


大家都知道, BST的结构是 Root的左半边所有节点都比Root小, Root的右半边所有节点都比Root的大。并且,所有子tree 都包含了这个特点。 比如上图,Root 为50,root左半部分所有的节点都比50小,右边所有节点都比50大。 再看看子tree。 17位left subtree的root。12比17小吧, 23比17大吧。 

在这个结构下,最小的元素一定是在最左下角。 上图中就是9. 第二小的元素是9的爸爸,12, 第三小的是subroot的右边,14. 而12,9,14 这几个东西如果看成一整个节点的话,这个节点的爸爸17就是下一个最小的元素,然后再往右走,19,23.

这种走法就是典型的in-order traversal. 那么找kth-element其实也就是判断一下我们in-order了有没有K次。


Follow up:

What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容