LeetCode #226 翻转二叉树
题目描述
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
方法一:递归
每次递归交换左右子树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
# 这里不写可能导致13行nonetype object
if root is None: return None
temp = root.left
root.left = self.invertTree(root.right)
root.right = self.invertTree(temp)
return root
- 时间复杂度:
- 空间复杂度:
方法二:迭代
类似BFS
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
stack = [root]
while stack:
curr = stack.pop()
if curr:
curr.left, curr.right = curr.right, curr.left
stack.append(curr.left)
stack.append(curr.right)
return root
- 时间复杂度:
- 空间复杂度: