对称的二叉树

题目

  请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

 

分析

  因为二叉树是对称的,所以将该树自己与自己的递归比较,分为三种情况:

  (1)当两棵树都为空时,返回true;

  (2)当只有一颗树为空时,返回false;

  (3)当两棵树都不为空时,进行递归判断,判断条件为:pRoot1的左孩子==pRoot2的右孩子 以及 pRoot1的右孩子==pRoot2的左孩子

 

代码

 1     boolean isSymmetrical(TreeNode pRoot){
 2         return isS(pRoot, pRoot);
 3     }
 4     
 5     boolean isS(TreeNode pRoot1, TreeNode pRoot2){
 6         if(pRoot1==null && pRoot2==null)
 7             return true;
 8         if(pRoot2==null || pRoot1==null){
 9             return false;
10         }
11         if(pRoot1.val!=pRoot2.val)
12             return false;
13         return isS(pRoot1.left, pRoot2.right) && isS(pRoot1.right, pRoot2.left);
14     }

 

posted on 2017-06-15 15:01  一个不会coding的girl  阅读(139)  评论(0编辑  收藏  举报

导航