二叉搜索树——230.二叉搜索树中第K小的元素
二叉搜索树——230.二叉搜索树中第K小的元素
题目:

思路:
因为要查找第k个最小元素,所以我们只要升序排列,让后就可找到。
又因其是二叉搜索树,这不是巧了嘛,由于二叉搜索树的有一个重要性质就是:BST的中序遍历结果是有序的(升序)。
然后这道题就迎刃而解了。
代码:
class Solution {
public:
// 记录当前元素的排名
int rank=0;
// 记录结果
int res=0;
int kthSmallest(TreeNode* root, int k) {
// 如果为空节点,直接返回
if(!root) return res;
/**中序遍历**/
kthSmallest(root->left,k); // 左
rank++;
// 找到第k小的元素,返回值
if(rank==k){
res=root->val;
}
kthSmallest(root->right,k); // 右
// 返回res
return res;
}
};
Rank:

Tips:
这个解法并不是最高效的解法,而是仅仅适用于这道题。具体的优化可以参考一下labuladong的算法小抄中的说法。

浙公网安备 33010602011771号