方法1:recursive
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if root is None:
return None
left = self.invertTree(root.left)
right = self.invertTree(root.right)
root.left = right
root.right = left
return root
方法2:iterative
思路和recursive类似,遇到一个node就把当前node的left和right翻转
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if root is None:
return None
queue = [root]
while queue:
node = queue.pop()
temp = node.left
node.left = node.right
node.right = temp
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return root