二叉搜索树的第k个结点

2020-07-24  本文已影响0人  Crazy_Bear
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    int index = 0;
    TreeNode KthNode(TreeNode pRoot, int k)
    {
        if(pRoot!=null) {
            TreeNode node =  KthNode(pRoot.left, k);
            if(node != null) return node;
            index++;
            if(index == k) return pRoot;
            node = KthNode(pRoot.right, k);
            if(node != null) return node;
        }
        return null;
    }
}
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if(!pRoot && k ==0) return nullptr;
        int count = 0;
        TreeNode * res = 0;
        inorder(pRoot, k ,count, res);
        return res;
    }
    void inorder(TreeNode *pRoot, int k , int &count, TreeNode* &res){
        if(pRoot==nullptr) return ;
        dfs(pRoot->left,k,  count,res);
        count += 1;
        if(count == k) res = pRoot;
        dfs(pRoot->right, k, count, res);
    }
};
上一篇 下一篇

猜你喜欢

热点阅读