这道2叉搜索树迭代器的核心还是一个排序问题。从最左端一直排列到最右端。然后取数就好了。代码如下:
# Definition for a binary tree node
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class BSTIterator(object):
def __init__(self, root):
"""
:type root: TreeNode
"""
self.root = root
self.a = []
if self.root == None:
self.a = []
else:
def porder(root):
if root.left != None:
porder(root.left)
self.a.append(root.val)
if root.right != None:
porder(root.right)
porder(self.root)
self.b = 0
def hasNext(self):
"""
:rtype: bool
"""
if self.b >= len(self.a):
return False
else:
return True
def next(self):
"""
:rtype: int
"""
self.b = self.b + 1
return self.a[self.b - 1]