一、题目描述
翻转一棵二叉树。
示例:
输入:
输出:
二、递归方法
思路与算法
我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。
仔细看下题目的 输入 和 输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。
其实就是交换一下左右节点,然后再递归的交换左节点,右节点。根据动画图我们可以总结出递归的两个条件如下:
终止条件:当前节点为 null 时返回
递归条件:交换当前节点的左右节点,再递归的交换当前节点的左节点,递归的交换当前节点的右节点
代码实现
class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
# 递归函数的终止条件,节点为空时返回
if not root:
return None
# 将当前节点的左右子树交换
root.left,root.right