【LeetCode HOT100】226. 翻转二叉树

加载中... 浏览

题目

给你一棵二叉树的根节点 root,翻转这棵二叉树,并返回其根节点。

翻转二叉树示例图

提示

一句话思路:递归——先递归翻转左右子树,再交换当前节点的左右孩子

  • 递归终止条件:节点为空,直接返回。
  • 后序遍历的思路:先把左右子树各自翻转好,最后再交换当前节点的 leftright
  • 时间 O(n)、空间 O(h),h 为树的高度。

答案

python
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:                # 空节点,递归终止
            return
        left = self.invertTree(root.left)       # 先递归翻转左子树
        right = self.invertTree(root.right)     # 再递归翻转右子树
        root.left = right          # 左孩子指向原右子树翻转后的结果
        root.right = left          # 右孩子指向原左子树翻转后的结果
        return root                # 返回当前节点(已翻转)

留言板

加载评论中...
【LeetCode HOT100】102. 二叉树的层序遍历
数据结构知识点(二)
Valaxy v0.28.0-beta.1 驱动|主题-Yunv0.28.0-beta.1