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