leetcode-226-翻转二叉树

题目

https://leetcode.cn/problems/invert-binary-tree/description/?envType=study-plan-v2&envId=top-100-liked

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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 noChild(self, root: Optional[TreeNode]):
if root is None:
return True
elif root.left is None and root.right is None:
return True
else:
return False
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if root is None or self.noChild(root):
return root
elif self.noChild(root.left) and self.noChild(root.right):
temp = root.left
root.left = root.right
root.right = temp
return root
else:
temp_l = self.invertTree(root.left)
temp_r = self.invertTree(root.right)
root.left = temp_r
root.right = temp_l
return root