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

提示
一句话思路:递归——先递归翻转左右子树,再交换当前节点的左右孩子。
- 递归终止条件:节点为空,直接返回。
- 后序遍历的思路:先把左右子树各自翻转好,最后再交换当前节点的
left和right。 - 时间 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 # 返回当前节点(已翻转)
留言板