Leetcode.114 二叉树的前序遍历
递归法
return [root.val] + self.preorderTraversal(root.left) + self.preorderTraversal(root.right) if root else []
迭代法
if not root: return []
stack = [root]
res = []
while stack:
node = stack.pop()
res.append(node.val)
if node.right: stack.append(node.right)
if node.left: stack.append(node.left)
return res
Leetcode.94 二叉树的中序遍历
递归法
return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right) if root else []
迭代法
res = []
stack = []
cur = root
while stack or cur:
if cur:
stack.append(cur)
cur = cur.left
else:
k = stack.pop()
res.append(k.val)
cur = k.right
Leetcode.145 二叉树的后序遍历
递归法
return self.postorderTraversal(root.left) + self.postorderTraversal(root.right) + [root.val] if root else []
迭代法
if not root:
return []
stack = [root]
result = []
while stack:
node = stack.pop()
result.append(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return result[::-1]