# 前序遍历
def preOrder(node,result):
if not node:
return result
stack = []
while stack or node:
while node:
stack.append(node)
result.append(node.val)
node = node.left
node = stack.pop()
node = node.right
return result
# 中序遍历
def inOrder(node,result):
if not node:
return result
stack = []
while stack or node:
while node:
stack.append(node)
node = node.left
node = stack.pop()
result.append(node.val)
node = node.right
# 后序遍历
def postOrder(node,result):
if not node:
return result
stack = []
while stack or node:
while node:
stack.append(node)
node = node.left if node.left else node.right
node = stack.pop()
result.append(node.val)
if stack and stack[-1].left == node:
node = stack[-1].right
else:
node = None