classTreeNode(object):def__init__(self, x):
self.val = x
self.left =None
self.right =Nonedefin_order_traversal(root):# 中序
res =[]
stack =[]#借用栈if root isNone:return res
cur = root
whilelen(stack)!=0or cur isnotNone:while cur isnotNone:
stack.append(cur)
cur = cur.left
node = stack.pop()
res.append(node.val)
cur = node.right
return res
# 中序打印二叉树(递归)definOrderTraverse(node):if node isNone:returnNone
inOrderTraverse(node.left)print(node.val)
inOrderTraverse(node.right)
前序遍历
classTreeNode(object):def__init__(self, x):
self.val = x
self.left =None
self.right =Nonedefpre_order_traversal(root):# 前序
result =[]
stack =[]
stack.append(root)whilelen(stack)!=0:
node = stack.pop()if node isNone:continue
result.append(node.val)
stack.append(node.right)
stack.append(node.left)return result
# 先序打印二叉树(递归)defpreOrderTraverse(node):if node isNone:returnNoneprint(node.val)
preOrderTraverse(node.left)
preOrderTraverse(node.right)
后序遍历
classTreeNode(object):def__init__(self, x):
self.val = x
self.left =None
self.right =Nonedefpost_order_traversal(root):# 后序"""
前序遍历为 root -> left -> right,后序遍历为 left -> right -> root,
可以修改前序遍历成为 root -> right -> left,那么这个顺序就和后序遍历正好相反
"""
result =[]
stack =[]
stack.append(root)whilelen(