首页 > 技术文章 > 寻找二叉搜索树的第k小第节点

isYiming 2020-03-23 18:37 原文

//寻找二叉搜索树的第k小第节点

//寻找二叉搜索树的第k小第节点
class Solution {
public:
    TreeNode* recursion(TreeNode* root,int& k){
        TreeNode* res;
        //如果左节点存在
        if(root->left!=nullptr){
            res=recursion(root->left,k);
            if(res!=nullptr){
                return res;
            }
        }

        if(k>1){
            k--;
        }
        else{
            return root;
        }

        if(root->right!=nullptr){
            res=recursion(root->right,k);
            if(res!=nullptr){
                return res;
            }
        }
        return res;
    }

    int kthSmallest(TreeNode* root, int k) {
        TreeNode* res;
        int index=k-1;
        res=recursion(root,index);
        return res->val;

    }
};
//二叉树
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

 

推荐阅读