LeetCode:173. 二叉搜索樹迭代器

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */


class BSTIterator {
public:
    vector<int>res;
    int i=0;

    void increment()
    {
        i=i+1;
    }

    BSTIterator(TreeNode* root) {
        res=inorderTraversal(root);
    }
    
    vector<int> inorderTraversal(TreeNode* root) {
        if(root==NULL)
        {
            return res;
        }
        if(root->left!=NULL)
        {
            inorderTraversal(root->left);
        }
        res.push_back(root->val);
        if(root->right!=NULL)
        {
            inorderTraversal(root->right);
        }
        return res;
    }

    /** @return the next smallest number */
    int next() {
        int temp= res[i];
        increment();
        return temp;
    }
    
    /** @return whether we have a next smallest number */
    bool hasNext() {
        return i<res.size();
    }
};

/**
 * Your BSTIterator object will be instantiated and called as such:
 * BSTIterator* obj = new BSTIterator(root);
 * int param_1 = obj->next();
 * bool param_2 = obj->hasNext();
 */
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章