题目
思路
用一个栈,进行中序遍历。取出一个next节点的时候,继续进行入栈操作。
代码
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
Example of iterate a tree:
iterator = BSTIterator(root)
while iterator.hasNext():
node = iterator.next()
do something for node
"""
class BSTIterator:
"""
@param: root: The root of binary tree.
"""
def __init__(self, root):
# do intialization if necessary
self.stack = []
while root:
self.stack.append(root)
root = root.left
"""
@return: True if there has next node, or false
"""
def hasNext(self, ):
# write your code here
return len(self.stack) > 0
"""
@return: return next node
"""
def next(self, ):
# write your code here
resNode = self.stack[-1]
self.stack.pop(-1)
tmpNode = resNode.right
while tmpNode:
self.stack.append(tmpNode)
tmpNode = tmpNode.left
return resNode