deflevelOrder(root: TreeNode)-> List[List[int]]:if root isNone:return[]
queen =[]
tree =[]
queen.append(root)whilelen(queen)!=0:
level =[]for _ inrange(len(queen)):
p = queen.pop(0)
level.append(p.val)if p.left isnotNone:
queen.append(p.left)if p.right isnotNone:
queen.append(p.right)
tree.append(level)return tree
二叉树的前序遍历
递归:
defpreorderTraversal(root: TreeNode)-> List[int]:defpreorder(root):if root isNone:return
tree.append(root.val)
preorder(root.left)
preorder(root.right)
tree =[]
preorder(root)return tree
迭代:
defpreorderTraversal(root: TreeNonde)-> List[int]:if root isNone:return[]
p = root
tree =[]
stack =[]while stack or p:while p:
stack.append(p)
tree.append(p.val)
p = p.left
p = stack.pop()
p = p.right
return tree
二叉树的中序遍历
递归:
definorderTraversal(root: TreeNode)-> List[int]:definorder(root: TreeNode):if root isNone:return
inorder(root.left)
tree.append(root.val)
inorder(root.right)
tree =[]
inorder(root)return tree
迭代:
definorderTraversal(root: TreeNode)-> List[int]:if root isNone:return[]
p = root
tree =[]
stack =[]while stack or p:while p:
stack.append(p)
p = p.left
p = stack.pop()
tree.append(p.val)
p = p.right
return tree
二叉树的后序遍历
递归:
defpostorderTraversal(root: TreeNode)-> List[int]:defpostorder(root: TreeNode):if root isNone:return
postorder(root.left)
postorder(root.right)
tree.append(root.val)
tree =[]
postorder(root)return tree
迭代:
defpostorderTraversal(root: TreeNode)-> List[int]:if root isNone:return[]
p = root
tree =[]
stack =[]
prev =Nonewhile stack or p:while p:
stack.append(p)
p = p.left
p = stack.pop()if p.right isNoneor p.right == prev:
tree.append(p.val)
prev = p
p =Noneelse:
stack.append(p)
p = p.right
return tree
二叉树的层序遍历(非递归实现,使用队列)def levelOrder(root: TreeNode) -> List[List[int]]: if root is None: return [] queen = [] tree = [] queen.append(root) while len(queen) != 0: level = [] for _ in range(len(queen)):