题目:
给定一颗二叉树的根节点root,翻转这棵二叉树,并返回根节点
方法一:递归
从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点root的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以root为根节点的整棵子树的翻转。
# 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 rootleft=self.invertTree(root.left)right=self.invertTree(root.right)root.left,root.right=right,leftreturn root
时间复杂度:O(n)遍历二叉树中的每一个节点
空间复杂度:O(n)
源自力扣官方题解