1.问题描述
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
2.方案
递归的方式解决。
递归的方式很简单,定义跳出的条件,以及递归的一个小部分如何实现。递归相当于实现了循环的过程。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) return root;
TreeNode invertTree = new TreeNode(0);
invertTree.val = root.val;
invertTree.left = invertTree(root.right);
invertTree.right = invertTree(root.left);
return invertTree;
}
}
python:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if root is None:
return root
root.left,root.right = self.invertTree(root.right),self.invertTree(root.left)
return root