翻转二叉树
https://leetcode.cn/problems/invert-binary-tree/ (opens new window) 需要注意的点
- 递归到子节点, 从子节点开始翻转
- 翻转节点左右节点,递归处理左节点,然后递归右节点
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return root
left = self.invertTree(root.left)
right = self.invertTree(root.right)
root.left = right
root.right = left
return root
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
def traverse(node: TreeNode) -> TreeNode:
if not node:
return
tmp = node.right
node.right = node.left
node.left = tmp
traverse(node.left)
traverse(node.right)
traverse(root)
return root