我的代码如下
private ArrayList<Integer> list=new ArrayList<>();
private int index=0;
public BSTIterator(TreeNode root) {
inOrderTraversal(root);
}
/** @return the next smallest number */
public int next() {
return list.get(index++);
}
/** @return whether we have a next smallest number */
public boolean hasNext() {
return (list.size())>index;
}
public void inOrderTraversal(TreeNode node){
if(node == null){
return;
}else{
inOrderTraversal(node.left);
list.add(node.val);
inOrderTraversal(node.right);
}
}
}
思路:
首先读题,调用next输出下一个最小的值.
首先想到了中序遍历保存到一个集合里然后按顺序输出就好了
网友评论