[leetcode][tree][stack] Binary Search Tree Iterator
2015-05-23 13:17
375 查看
题目:
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.
Calling
Note:
run in average O(1) time and uses O(h) memory, where h is the height of the tree.
注:此题实质是二叉树的中序遍历
Implement 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.
Note:
next()and
hasNext()should
run in average O(1) time and uses O(h) memory, where h is the height of the tree.
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class BSTIterator { public: BSTIterator(TreeNode *root) { iter = root; while (iter){//一路向左 sta.push(iter); iter = iter->left; }//此时栈顶节点是最左节点,也即最小节点 } /** @return whether we have a next smallest number */ bool hasNext() { return !sta.empty() || iter; } /** @return the next smallest number */ //最小数:中序遍历的第一节点 int next() { iter = sta.top(); sta.pop(); int res = iter->val; iter = iter->right; while (iter){ sta.push(iter); iter = iter->left; }//此时栈顶元素是最小值,为下一次做准备 return res; } private: TreeNode *iter; stack<TreeNode *> sta; }; /** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
注:此题实质是二叉树的中序遍历
相关文章推荐
- Binary Search Tree Iterator -- leetcode
- Binary Search Tree Iterator leetcode
- Binary Search Tree Iterator leetcode
- [LeetCode] 173. Binary Search Tree Iterator 二叉搜索树迭代器
- leetcode 第173题 Binary Search Tree Iterator
- leetcode 173. Binary Search Tree Iterator
- [LeetCode]Binary Search Tree Iterator
- LeetCode173—Binary Search Tree Iterator
- [leetcode]Binary Search Tree Iterator
- [LeetCode] Binary Search Tree Iterator
- LeetCode: Binary Search Tree Iterator
- [Leetcode] 173. Binary Search Tree Iterator 解题报告
- 173. Binary Search Tree Iterator LeetCode
- [LeetCode]173. Binary Search Tree Iterator
- [LeetCode]173 Binary Search Tree Iterator
- LeetCode-Binary Search Tree Iterator-解题报告
- LeetCode(173) Binary Search Tree Iterator解题报告
- [leetcode 173] Binary Search Tree Iterator-------为二叉搜索树实现迭代器功能
- [LeetCode]Binary Search Tree Iterator,解题报告
- LeetCode(173) Binary Search Tree Iterator