class BSTIterator {
List<Integer> list;//申明集合,在外面定义,是全局定义
int progress;//标识遍历进度
public BSTIterator(TreeNode root) {
list=new ArrayList<>();//定义list
progress=0;//初始化progress
inorder(root);//中序遍历
}
public int next() {//查找下一个节点值
int res=list.get(progress);//list集合的下一个值即为下一个节点值
progress++;//进度加一
return res;//返回节点值
}
public boolean hasNext() {
return progress!=list.size();
}
public void inorder(TreeNode root){
if(root==null){
return;
}
inorder(root.left);
list.add(root.val);//中序遍历存储值
inorder(root.right);
}
}