其他分享
首页 > 其他分享> > 《从头再来》剑指offer.54 二叉搜索树的第k大节点

《从头再来》剑指offer.54 二叉搜索树的第k大节点

作者:互联网

给定一棵二叉搜索树,请找出其中第k大的节点。

我们需要明确一点,二叉搜索树的中序遍历即使一个从小到大的序列,所以找出的k大节点的话,我们可以直接对二叉搜索树进行中序遍历后,再来输出第k大即可。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    //中序遍历
    void traverse(TreeNode* root){
        if(root == nullptr) return;

        traverse(root->left);
        result.push_back(root->val);
        traverse(root->right);
    }
    vector<int> result;
    int kthLargest(TreeNode* root, int k) {
        traverse(root);
        return result[result.size()-k];
    }
};

中序遍历的模板就没什么好说的,如果是先序遍历、后续遍历的话,只需要改变三条代码的次序即可。

《从头再来》

标签:traverse,遍历,TreeNode,int,二叉,result,从头再来,offer.54,root
来源: https://www.cnblogs.com/azie420/p/14860631.html