领扣(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 }

 

posted @ 2018-11-14 20:09  AXiangCoding  阅读(241)  评论(0编辑  收藏  举报