题解 | #第k轻的牛牛#

第k轻的牛牛

https://www.nowcoder.com/practice/d3b31f055b1640d9b10de0a6f2b8e6f3

考察知识点: 中序遍历、递归、二叉搜索树

题目分析:

 题目中要求出第k轻的牛牛。实际上,对于一棵二叉搜索树,它的中序遍历是递增的。例如 1,2,3,4,5,6

alt

 因此,可以通过中序遍历得到二叉搜索树中的第k小的数。

 中序遍历即先访问左子树,然后访问根节点,之后访问右子树。在代码中按照这个顺序进行递归即可。

所用编程语言: C++

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @param k int整型 
     * @return int整型
     */
    void traverse(TreeNode *root, int &k, int &ans) {
        if (!root) return;
        traverse(root->left, k, ans);
        k--;
        if (k == 0) {
            ans = root->val;
            return;
        }
        traverse(root->right, k, ans);
    }
    int kthLighest(TreeNode* root, int k) {
        // write code here
        int ans;
        traverse(root, k, ans);
        return ans;
    }
};
全部评论

相关推荐

09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
DBsan:我也遇到过好的HR,全程友好交流。这年头基本的礼貌和尊重为什么好多HR都做不到
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务