Java for LeetCode 173 Binary Search Tree Iterator

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的时候直接预处理下,构造出一条按照中序遍历的list,每次读取list的元素即可。

二、不进行预处理,按照中序遍历的思路使用Stack动态的进行处理

这里我们实现思路二:

public class BSTIterator {
	private Stack<TreeNode> stack=new Stack<TreeNode>();

	public BSTIterator(TreeNode root) {
		if (root != null)
			pushLeft(root);
	}

	/** @return whether we have a next smallest number */
	public boolean hasNext() {
		return !stack.isEmpty();
	}

	/** @return the next smallest number */
	public int next() {
		TreeNode top = stack.peek();
		stack.pop();
		if(top.right!=null)
		pushLeft(top.right);
		return top.val;
	}

	public void pushLeft(TreeNode root) {
		stack.push(root);
		TreeNode rootTemp = root.left;
		while (rootTemp != null) {
			stack.push(rootTemp);
			rootTemp = rootTemp.left;
		}
	}
}
时间: 2024-10-23 16:18:54

Java for LeetCode 173 Binary Search Tree Iterator的相关文章

[LeetCode] 173. Binary Search Tree Iterator Java

题目: 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 u

? leetcode 173. Binary Search Tree Iterator 设计迭代器(搜索树)--------- java

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

leetcode 173. Binary Search Tree Iterator

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

8.10 [LeetCode 173] Binary Search Tree Iterator

Question link 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)

【LeetCode】Binary Search Tree Iterator (2 solutions)

Binary Search Tree Iterator 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

Leetcode solution 173: Binary Search Tree Iterator

Problem Statement 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. Example: BSTIterator iterator = new BSTIterator(ro

173. Binary Search Tree Iterator - Unsolved

https://leetcode.com/problems/binary-search-tree-iterator/#/description 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 B

[email&#160;protected] [173] Binary Search Tree Iterator (InOrder traversal)

https://leetcode.com/problems/binary-search-tree-iterator/ 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: nex

【leetcode】Binary Search Tree Iterator

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