lc173二叉搜索树迭代器
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。
调用 next() 将返回二叉搜索树中的下一个最小的数。
public class BSTIterator {
private List<Integer> list = new ArrayList<Integer>();
private int[] minArray;
private int curr;
public BSTIterator(TreeNode root) {
initList(root);
minArray = new int[list.size()];
Integer[] integers = list.toArray(new Integer[list.size()]);
transfer(integers);
}
private void initList(TreeNode treeNode) {
if (treeNode != null) {
initList(treeNode.left);
list.add(treeNode.val);
initList(treeNode.right);
}
}
private void transfer(Integer[] integers) {
for (int i = 0; i < integers.length; i++) {
minArray[i] = integers[i];
}
}
/**
* @return the next smallest number
*/
public int next() {
int temp = curr;
curr++;
return minArray[temp];
}
/**
* @return whether we have a next smallest number
*/
public boolean hasNext() {
if (curr == minArray.length) {
return false;
}
return true;
}
}
AC截图