首页 > 学院 > 开发设计 > 正文

Leetcode 173 Binary Search Tree Iterator

2019-11-08 03:09:24
字体:
来源:转载
供稿:网友

mplement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.

Calling next() will return the next smallest number in the BST.

设计题,实现一个二叉搜索树迭代类,要求实现next()和hasNext()两个成员函数

很容易想到中序遍历,因为需要在O(1)复杂度完成,所以不能使用在线的方式,在构造函数中先使用中序遍历构建出序列。

两个方法以离线的方式查询就可以了。

过完年要好好加油了

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class BSTIterator {public:    queue<int> q;    void dfs(TreeNode *root)    {        if(!root) return ;        if(root->left) dfs(root->left);        q.push(root->val);        if(root->right) dfs(root->right);    }    BSTIterator(TreeNode *root)     {        dfs(root);    }    /** @return whether we have a next smallest number */    bool hasNext()     {        if(q.empty()) return false;        return true;    }    /** @return the next smallest number */    int next()     {        int res = q.front();        q.pop();        return res;    }};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表