剑指offer_对称的二叉树

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的

方法一:和镜像树比较是否相同,注意要先拷贝树。

 1 /*
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6 
 7     public TreeNode(int val) {
 8         this.val = val;
 9 
10     }
11 
12 }
13 */
14 public class Solution {
15     boolean isSymmetrical(TreeNode pRoot)
16     {
17         if (pRoot == null) return true;
18         TreeNode memo = copyTree(pRoot);
19         mirror(pRoot);
20         return isEqual(memo,pRoot);
21     }
22     boolean isEqual(TreeNode memo,TreeNode pRoot){
23         if(memo == null&&pRoot==null) return true;
24         if(memo == null||pRoot==null) return false;
25         if(memo.val!=pRoot.val) return false;
26         return isEqual(memo.left,pRoot.left)&&isEqual(memo.right,pRoot.right);
27     }
28     public void mirror(TreeNode root){
29         if(root == null) return;
30         TreeNode temp = root.left;
31         root.left = root.right;
32         root.right = temp;
33         mirror(root.left);
34         mirror(root.right);
35     }
36     
37     public TreeNode copyTree(TreeNode root){
38         if(root==null) return null;
39         TreeNode t = new TreeNode(root.val);
40         t.left = copyTree(root.left);
41         t.right = copyTree(root.right);
42         return t;
43     }
44 }

方法二:

可以直接递归比较左右子树是否一样

 1 /*
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6 
 7     public TreeNode(int val) {
 8         this.val = val;
 9 
10     }
11 
12 }
13 */
14 public class Solution {
15     boolean isSymmetrical(TreeNode pRoot)
16     {
17         if(pRoot==null) return true;
18         return isEqual(pRoot.left,pRoot.right);
19     }
20     boolean isEqual(TreeNode left,TreeNode right){
21         if(left==null&&right==null) return true;
22         if(left==null||right==null) return false;
23         if(left.val!=right.val) return false;
24         return isEqual(left.left,right.right)&&isEqual(left.right,right.left);
25     }
26 }

 


posted @ 2019-08-30 09:51  chyblogs  阅读(109)  评论(0)    收藏  举报