주어진 BST를 오름차순으로 출력?해주는 문제이다.
next할때마다 다음으로 큰 수를 출력해준다.
hashNext는 다음이 있는지 확인을 한다.
import java.util.*;
class BSTIterator {
List<Integer> list = new ArrayList<>();
int index = 0;
public BSTIterator(TreeNode root) {
Stack<TreeNode> s = new Stack<>();
s.add(root);
while(!s.isEmpty()) {
TreeNode temp = s.pop();
if(temp.left != null) {
TreeNode next = temp.left;
temp.left = null;
s.add(temp);
s.add(next);
continue;
}
if(list.isEmpty()) {
list.add(temp.val);
}
else {
list.add(temp.val);
}
if(temp.right != null) {
TreeNode next = temp.right;
temp.right = null;
s.add(next);
}
}
}
public int next() {
return list.get(index++);
}
public boolean hasNext() {
if(index >= list.size()) {
return false;
}
return true;
}
}