剑指OFFER 二叉搜索树的第k个结点

剑指OFFER 二叉搜索树的第k个结点

分析

先中序遍历一遍,保存下结果,然后取第k小个结点即可

代码

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    vector<TreeNode* > v;
    
    void recur(TreeNode* node)
    {
        if(node == NULL)return;
        recur(node->left);
        v.push_back(node);
        recur(node->right);
        
    }
    
    TreeNode* KthNode(TreeNode* root, int k)
    {
        if(root==NULL || k<=0)return NULL;
        recur(root);
        if(k>=v.size()+1)return NULL;
        return v[k-1];
    }

    
};
posted @ 2020-02-06 18:29  virgil_devil  阅读(95)  评论(0编辑  收藏  举报