设计数据结构,用一个内部的stack存所有小于root的节点,即push的顺序是从大到小的,实现一个pushall函数 就是push这个node一直往左走路径上的所有节点。
public class BSTIterator {
private Stack<TreeNode> stack = new Stack<TreeNode>();
public BSTIterator(TreeNode root) {
pushAll(root);
}
private void pushAll(TreeNode node) {
while ( node != null ){
stack.push(node);
node = node.left;
}
}
/** @return whether we have a next smallest number */
public boolean hasNext() {
return !stack.isEmpty();
}
/** @return the next smallest number */
public int next() {
TreeNode cur = stack.pop();
pushAll(cur.right);
return cur.val;
}
}

本文介绍了一种二叉搜索树迭代器的设计方法,通过使用栈来存储所有小于根节点的元素,实现了按顺序访问二叉搜索树中所有元素的功能。主要提供了pushAll函数用于递归地将节点压入栈中,并定义了next和hasNext方法来遍历和检查节点。
818

被折叠的 条评论
为什么被折叠?



