173. Binary Search Tree Iterator

原创 2016年05月30日 10:54:59

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) {
		TreeNode* p = root;
		while (p){
			mystack.push(p);
			p = p->left;
		}
	}

	/** @return whether we have a next smallest number */
	bool hasNext() {
		return !mystack.empty();
	}

	/** @return the next smallest number */
	int next() {
	    
		TreeNode* p = mystack.top();
		int res = p->val;
		mystack.pop();
		if (p->right){
			p = p->right;
			while (p){
				mystack.push(p);
				p = p->left;
			}
		}
		return res;
	}
private:
	stack<TreeNode*> mystack;
};

/**
 * Your BSTIterator will be called like this:
 * BSTIterator i = BSTIterator(root);
 * while (i.hasNext()) cout << i.next();
 */







版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

<LeetCode OJ> 173. Binary Search Tree Iterator

Total Accepted: 50775 Total Submissions: 144066 Difficulty: Medium Implement an iterator over a...

173:Binary Search Tree Iterator【树】【栈】

题目链接:click~ /*题意:实现BST迭代器类,next()函数返回下一个最小的结点,hasNext()判断是否有下一个最小结点 要求O(1)的时间和O(h)的的复杂度,h为树...

[LeetCode]problem 173. Binary Search Tree Iterator

TAG中序遍历二叉查找树得到一个递增序列二叉查找树题目链接方法这道题挺有意思的,在二叉查找树的基础上建立一个迭代器,要求hasnext和next操作要是平均O(1)的,且最大空间消耗是O(h),h是树...

LeetCode - 173. Binary Search Tree Iterator

要求实现Binary Search Tree的hasNext()和next()操作,最小的元素自然是从root开始一直找左子树左子树直到为空,这是我们找到了我们需要的第一个元素,但是接下来的元素怎么办...

173. Binary Search Tree Iterator

题目:Binary Search Tree Iterator原题链接:https://leetcode.com/problems/binary-search-tree-iterator/ Imple...

leetcode_173_Binary Search Tree Iterator

思路: 这道题想了好久,知道用中序遍历来解决,用一个list将遍历的元素存储起来一下就解决了,但是空间复杂度不行。具体怎么解决,如何控制程序的终止困扰了我好久。知道我想起来至多用O(h) memor...

[leetcode 173] Binary Search Tree Iterator-------为二叉搜索树实现迭代器功能

Question: Implement an iterator over a binary search tree (BST). Your iterator will be initiali...

Leetcode 173 Binary Search Tree Iterator 二叉查找树迭代器

实现一个适用于二叉查找树的迭代器,该迭代器通过二叉查找树的根结点来实例化。调用next()返回二叉查找树中的最小的元素。next()和hasNext()运行的平均时间复杂度为O(1),空间复杂度为O(...

[LeetCode]173.Binary Search Tree Iterator

【题目】 Implement an iterator over a binary search tree (BST). Your iterator will be initialized with...

leetcode-173:Binary Search Tree Iterator(Java)

Binary Search Tree Iterator Implement an iterator over a binary search tree (BST). Your iterato...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:173. Binary Search Tree Iterator
举报原因:
原因补充:

(最多只允许输入30个字)