剑指offer---二叉搜索树的第K个节点

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

 

很自然想到中序遍历 我用的递归的方法

class Solution 
{

private:
    void ZhongXuBianLi(vector<TreeNode*> &A,TreeNode* root)
    {
        if (root == NULL) return;
        ZhongXuBianLi(A, root->left);
        A.push_back(root);
        ZhongXuBianLi(A, root->right);
    }
public:
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if ((pRoot == NULL) || (k <= 0)) return NULL;
        vector<TreeNode*> re;
        ZhongXuBianLi(re, pRoot);
        if (k > re.size())    return NULL;
        else return re[k - 1];



    }


};

 

posted @ 2017-08-02 02:20  双马尾是老公的方向盘  阅读(131)  评论(0编辑  收藏  举报