【Leetcode】173. Binary Search Tree Iterator

Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.

Calling next() will return the next smallest number in the BST.

Note: next() and hasNext() should run in average O(1) time and uses O(h) memory, where h is the height of the tree.

1 stack的初始化也是[]

2 和中序遍历一样,先把最左边的所有节点压栈

3 stack栈顶永远是最小的元素,所以在最开始把最左边的全部压栈,栈顶就是最最左边的那个数,也就是整棵树的最小值,pop这个最小数后,如果有右子树再压栈,再把这个右子树所有的左边的压栈,和最开始压栈一样,就这样一直循环下去

4 在第二步的时候,当pop了最最左边数以后,如果其没有右子树,则继续pop第二左的数

5 对于hasNext()函数,只要len(stack)>0,就存在,然后返回True


6 在init的函数里,就把所有左边的node都压栈

7 self.stack.append(root)  压栈的时候是把node压进去,不是压栈node.val



你可能感兴趣的:(【Leetcode】173. Binary Search Tree Iterator)