1、题目
翻转一棵二叉树。
示例:
输入:
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
2、解题思路
解树相关问题三件套:DFS,BFS,递归;
(1)解决思路一:递归(因为递归的代码写着比较简单);递归三部曲
第一步:先判断根节点,然后交换根节点的左右节点
第二步:交换左节点为根节点的,交换右节点为根节点的
第三步:所有的交换完成之后,返回最终的根节点root
3、java代码
public TreeNode invertTree(TreeNode root) {
//1、第一步如果只有根节点的话需要做什么判断及操作
if(root==null) return null;
TreeNode tmp=root.left;
root.left=root.right;
root.right=tmp;
//2、判断完根节点需要反转左节点和右节点
TreeNode left=invertTree(root.left);
TreeNode right=invertTree(root.right);
//3、最后返回所有的根节点
return root;
}