leetcode 第173题 Binary Search Tree Iterator
2015-05-09 14:40
411 查看
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.
思路:增加一个辅助栈,空间复杂度为O(h),每次返回的栈顶元素都是二叉搜索树的最小节点。
C++代码实现:
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.
思路:增加一个辅助栈,空间复杂度为O(h),每次返回的栈顶元素都是二叉搜索树的最小节点。
C++代码实现:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class BSTIterator { private: stack<TreeNode*> st; public: BSTIterator(TreeNode *root) { findleft(root); } /** @return whether we have a next smallest number */ bool hasNext() { if(st.empty()) return false; else return true; } /** @return the next smallest number */ int next() { TreeNode *top = st.top(); st.pop(); if(top->right != NULL) findleft(top->right); return top->val; } void findleft(TreeNode *root){ TreeNode *p = root; while(p != NULL){ st.push(p); p = p->left; } } }; /** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
相关文章推荐
- [leetcode]Binary Search Tree Iterator
- [LeetCode] Binary Search Tree Iterator
- [LeetCode]Binary Search Tree Iterator
- [C++]LeetCode: 93 Binary Search Tree Iterator (经典题,非递归的中序遍历)
- [leetcode][tree][stack] Binary Search Tree Iterator
- Leetcode 173 Binary Search Tree Iterator 二叉查找树迭代器
- LeetCode #173 - Binary Search Tree Iterator - Medium
- LeetCode|Binary Search Tree Iterator-java
- LeetCode[173] Binary Search Tree Iterator
- Binary Search Tree Iterator leetcode
- Leetcode[173]-Binary Search Tree Iterator
- LeetCode - 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
- [LeetCode] Binary Search Tree Iterator
- leetcode——173——Binary Search Tree Iterator
- [leetcode]Binary Search Tree Iterator,算法复杂度分析