参考博客☞python实现二叉树和它的七种遍历
前序遍历
def pre_order(root):
if not root:
return None
stack = []
node = root
while node or stack:
while node:
print(node.val)
stack.append(node)
node = node.left
node = stack.pop()
node = node.right
中序遍历
def mid_order(root):
if not root:
return None
stack = []
node = root
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
print(node.val)
node = node.right
后序遍历
def last_order(root):
if not root:
return None
stack1 = [root]
stack2 = []
while stack1:
node = stack1.pop()
if node.left:
stack1.append(node.left)
if node.right:
stack1.append(node.right)
stack2.append(node) # stack2的存入顺序:中右左
while stack2:
print(stack2.pop().val) # stack2的pop顺序是左右中,正好为后序遍历