相似题目:

  1. 【LeetCode】572. 另一个树的子树
  2. 【LeetCode】104. 二叉树的最大深度【简单】
  3. 【LeetCode】110. 平衡二叉树
  4. 【LeetCode】297. 二叉树的序列化与反序列化【困难】
  5. 【LeetCode】二叉树各种遍历大汇总(秒杀前序、中序、后序、层序)递归 & 迭代
  6. 【LeetCode】235. 二叉搜索树的最近公共祖先

1. 题目描述

翻转一棵二叉树。

示例:

输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9
输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

2. 解题代码

# 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:
        if not root:
            return root
        root.left, root.right = root.right, root.left   # 把根节点的左右孩子翻转
        self.invertTree(root.left)                      # 递归地翻转左孩子的左孩子
        self.invertTree(root.right)                     # 递归地翻转左孩子的右孩子
        return root