码迷,mamicode.com
首页 > 其他好文 > 详细

第k小的结点

时间:2021-02-09 12:14:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:数值   lse   struct   结果   void   rgba   kth   int   二叉搜索树   

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

重点是,如何管理kk的值与最终结果的关系。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    int kk=-1;
    TreeNode* ret;
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if(k==0) return NULL;
        kk=k;
        KthNode(pRoot);
        if(kk<=0) return ret;
        else return NULL;
    }
    
    void KthNode(TreeNode* pRoot)
    {
        if(pRoot==NULL||kk<0) return;
        if(pRoot->left!=NULL) KthNode(pRoot->left);
        kk--;
        if(kk==0) ret = pRoot;
        if(pRoot->right!=NULL) KthNode(pRoot->right);
    }
};

 

第k小的结点

标签:数值   lse   struct   结果   void   rgba   kth   int   二叉搜索树   

原文地址:https://www.cnblogs.com/greatFreden/p/13220277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!