领扣(LeetCode)翻转二叉树 个人题解
翻转一棵二叉树。
示例:
输入:
4 / \ 2 7 / \ / \ 1 3 6 9
输出:
4 / \ 7 2 / \ / \ 9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
这道题比较简单,就是一路判断下去就是了。注意在二叉树为空,或者左右节点为空时做个特判。
代码如下:
1 class Solution { 2 public TreeNode invertTree(TreeNode root) { 3 FindNext(root); 4 return root; 5 } 6 7 public void FindNext(TreeNode t) 8 { 9 if(t==null ||(t.left==null && t.right==null)) 10 return ; 11 else if(t.left!=null && t.right==null) 12 { 13 t.right=t.left; 14 t.left=null; 15 } 16 else if(t.left==null && t.right!=null){ 17 t.left=t.right; 18 t.right=null; 19 } 20 else { 21 TreeNode tmp=t.left; 22 t.left=t.right; 23 t.right=tmp; 24 } 25 FindNext(t.left); 26 FindNext(t.right); 27 } 28 }