<LeetCode OJ> 173. Binary Search Tree Iterator
来源:互联网 发布:如何优化404页面 编辑:程序博客网 时间:2024/06/06 16:52
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.
分析:
感觉蛮简单的!就是一个中序遍历嘛!可能想的太简单了!
next()和hasnext()函数的空间复杂度为O(1),时间复杂度为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: BSTIterator(TreeNode *root) { inorderTraversal(root);//获取中序遍历结果 pos=0; } void inorderTraversal(TreeNode* root) { if(root){ inorderTraversal(root->left); result.push_back(root->val); inorderTraversal(root->right); } } /** @return whether we have a next smallest number */ bool hasNext() { return pos < result.size(); } /** @return the next smallest number */ int next() { return result[pos++]; }private: vector<int> result; int pos;};/** * Your BSTIterator will be called like this: * BSTIterator i = BSTIterator(root); * while (i.hasNext()) cout << i.next(); */
别人的算法设计:
class BSTIterator { public: BSTIterator(TreeNode *root) { pushLeft(root); } /** @return whether we have a next smallest number */ bool hasNext() { return !stk.empty(); } /** @return the next smallest number */ int next() {//空间复杂度为O(h),时间复杂度为O(h) TreeNode *tmpNode = stk.top(); stk.pop(); pushLeft(tmpNode->right); return tmpNode->val; } void pushLeft(TreeNode *node) {//空间复杂度为O(h),时间复杂度为O(h) while (node != NULL) { stk.push(node); node = node->left; } } private: stack<TreeNode *> stk;};
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/51660101
原作者博客:http://blog.csdn.net/ebowtang
本博客LeetCode题解索引:http://blog.csdn.net/ebowtang/article/details/50668895
2 0
- <LeetCode OJ> 173. Binary Search Tree Iterator
- LeetCode OJ Binary Search Tree Iterator
- [LeetCode]173.Binary Search Tree Iterator
- [leetcode] 173.Binary Search Tree Iterator
- LeetCode 173. 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 173. Binary Search Tree Iterator
- LeetCode *** 173. Binary Search Tree Iterator
- LeetCode 173. Binary Search Tree Iterator
- [leetcode] 173. Binary Search Tree Iterator
- [LeetCode]problem 173. Binary Search Tree Iterator
- LeetCode - 173. Binary Search Tree Iterator
- [leetcode] 173. Binary Search Tree Iterator
- [LeetCode] 173. Binary Search Tree Iterator
- LeetCode 173. Binary Search Tree Iterator
- Xutils3Android功能最广的开源框架
- 第15周阅读程序4
- 【JAVA学习】“-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数
- SVN开发
- Win7+Ubuntu 16.04LTS 双系统安装
- <LeetCode OJ> 173. Binary Search Tree Iterator
- Linux 管道命令
- poj 3683 Priest John's Busiest Day 2_sat
- C++在STM8单片机上封装NRF24L01模块
- hdu 1013 Digital Roots
- ScreenPointToRay
- 汉诺塔问题
- C++ STL中迭代器介绍
- leetcode 216. Combination Sum III