剑指offer—二叉搜索树的第K个结点

来源:互联网 发布:淘宝经常出现的男模特 编辑:程序博客网 时间:2024/06/09 23:32

给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。

提议分析: 中序遍历即按照结点由小到大的顺序排列的,寻找第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 *>out;    void Inorder(TreeNode *node)        {        if(node==NULL)            return;        Inorder(node->left);        out.push_back(node);        Inorder(node->right);}    TreeNode* KthNode(TreeNode* pRoot, int k)    {        if(pRoot==NULL||k==0)            return NULL;        Inorder(pRoot);        if(k>out.size())            return NULL;         return out[k-1];            } };


0 0
原创粉丝点击