题解 | #二叉搜索树的第k个结点#

二叉搜索树的第k个结点

http://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a

先序遍历+全局变量
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    int num;
    TreeNode* kNode;
    TreeNode* KthNode(TreeNode* pRoot, int k) {
        num = k;
        preOrder(pRoot);
        return kNode;
    }
    
    void preOrder(TreeNode* pRoot){
        if(!pRoot) return;
        if(pRoot->left)  preOrder(pRoot->left);
        if(num==1) {
            kNode = pRoot;
            num--;
            return;
        }
        else if(num>1)  --num;
        else return;
        if(pRoot->right)  preOrder(pRoot->right);
    }
};


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务