二叉搜索树——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的算法小抄中的说法。

posted @ 2021-03-21 23:25  Originhhh  阅读(68)  评论(0)    收藏  举报