题目描述
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
package com.sunny.offer;
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class treeNode2 {
public static void main(String[] args) {
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(2);
TreeNode node4 = new TreeNode(3);
TreeNode node5 = new TreeNode(4);
TreeNode node6 = new TreeNode(4);
TreeNode node7 = new TreeNode(3);
node1.left = node2;
node1.right = node3;
node2.left = node4;
node2.right = node5;
node3.left = node6;
node3.right = node7;
System.out.println(isSymmetrical(node1));
}
public static boolean isSymmetrical(TreeNode pRoot) {
return pRoot == null||judge(pRoot.left,pRoot.right);
}
public static boolean judge(TreeNode left,TreeNode right){
if(left == null && right == null){
return true;
}else if(left == null||right == null){
return false;
}
if(left.val != right.val){
return false;
}else {
return judge(left.left,right.right)&&judge(right.right, left.left);
}
}
}