LintCode 86:Binary Search Tree Iterator

来源:互联网 发布:风险评价矩阵法 编辑:程序博客网 时间:2024/05/19 14:55

虽说是hard难度但是实际很简单。在构造时直接将树按inorder顺序保存入vector中,时间复杂度为O(N),空间复杂度为O(N),之后再获取node时的复杂度全都为O(1)。


class BSTIterator {    vector<TreeNode*> inOrderList;    vector<TreeNode*>::iterator p;    void inOrderTree(TreeNode* node){        if(!node)            return;        inOrderTree(node->left);        inOrderList.push_back(node);        inOrderTree(node->right);        return;    }public:    //@param root: The root of binary tree.    BSTIterator(TreeNode *root) {        inOrderTree(root);        p=inOrderList.begin();    }    //@return: True if there has next node, or false    bool hasNext() {        return (p!=inOrderList.end());    }    //@return: return next node    TreeNode* next() {        TreeNode* result=*p;        p++;        return result;    }};


0 0
原创粉丝点击