题目:
给定一颗二叉树的根节点root,翻转这棵二叉树,并返回根节点

方法一:递归
从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点root的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以root为根节点的整棵子树的翻转。
python
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def invertTree(self, root):
"""
:type root: Optional[TreeNode]
:rtype: Optional[TreeNode]
"""
if not root:
return root
left=self.invertTree(root.left)
right=self.invertTree(root.right)
root.left,root.right=right,left
return root
时间复杂度:O(n)遍历二叉树中的每一个节点
空间复杂度:O(n)
源自力扣官方题解