二叉树遍历
一、中序遍历
def inorderTraversal(root): if not root: return [] return inorderTraversal(root.left) + [root.val] + inorderTraversal(root.right) def inorderTraversal(root): stack = [] sol = [] curr = root while stack or curr: if curr: stack.append(curr) curr = curr.left else: curr = stack.pop() sol.append(curr.val) curr = curr.right return sol
二、前序遍历
def preorderTraversal(root): if not root: return [] return [root.val] + inorderTraversal(root.left) + inorderTraversal(root.right) def preorderTraversal(root): stack = [] sol = [] curr = root while stack or curr: if curr: sol.append(curr.val) stack.append(curr.right) curr = curr.left else: curr = stack.pop() return sol
三、后序遍历
def postorderTraversal(root): if not root: return [] return inorderTraversal(root.left) + inorderTraversal(root.right) + [root.val] def postorderTraversal(root): stack = [] sol = [] curr = root while stack or curr: if curr: sol.append(curr.val) stack.append(curr.left) curr = curr.right else: curr = stack.pop() return sol[::-1]