leetcode之Binary Search Tree Iterator
来源:互联网 发布:k核分析 社会网络 编辑:程序博客网 时间:2024/05/17 01:06
题目:
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.
解答:
由于BST的中序遍历就是从小到大的顺序, 所以直接进行中序遍历即可,为了满足复杂度要求,需要将递归改为迭代过程,用栈实现
/** * 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) { if(!root) return; while(root) { st.push(root); root = root->left; } } /** @return whether we have a next smallest number */ bool hasNext() { return !st.empty(); } /** @return the next smallest number */ int next() { if(BSTIterator :: hasNext()) { int res = st.top()->val; TreeNode *tmp = st.top(); st.pop(); if(tmp->right) { tmp = tmp->right; while(tmp) { st.push(tmp); tmp = tmp->left; } } return res; } }private: stack<TreeNode*> st;};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
0 0
- Leetcode 之 Binary Search Tree Iterator
- leetcode之Binary Search Tree Iterator
- leetcode之Binary Search Tree Iterator
- [LeetCode] Binary Search Tree Iterator
- LeetCode Binary Search Tree Iterator
- Leetcode Binary Search Tree Iterator
- [LeetCode] Binary Search Tree Iterator
- Leetcode: Binary Search Tree Iterator
- leetcode:Binary Search Tree Iterator
- Binary Search Tree Iterator --- LeetCode
- LeetCode--Binary Search Tree Iterator
- Leetcode:Binary Search Tree Iterator
- [LeetCode]Binary Search Tree Iterator
- LeetCode: Binary Search Tree Iterator
- *LeetCode-Binary Search Tree Iterator
- [Leetcode]Binary Search Tree Iterator
- LeetCode::Binary Search Tree Iterator
- [Leetcode]Binary Search Tree Iterator
- CM给hive添加自定义jar包
- 毁灭程序员的15个障碍
- 【leetcode】【8】String to Integer (atoi)
- 数据分析学习
- 修改ssh 配置 取消 使用dns
- leetcode之Binary Search Tree Iterator
- 第一行代码-9.4 服务的生命周期
- 插入排序
- TextView属性大全+单行显示长文本
- 如何快速配置CentOS的时间同步
- iOS中Layer的认识和使用
- 开发常用工具
- 自作農創定을 爲한 全面土地買收計劃
- SQLAlchemy指南(tutorial)