/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if(pRoot == null){ //特殊值判断,如果是空二叉树,则是对称二叉树,返回true
return true;
}
return isSymmetrical2Tree(pRoot,pRoot);
}
//该函数用于判断两棵二叉树是否是对称二叉树
public static boolean isSymmetrical2Tree(TreeNode root1,TreeNode root2){
//。情况1:如果两棵二叉树都为空,则是对称二叉树
if(root1 == null && root2 == null){
return true;
}
//。情况2:如果两棵二叉树中有一棵是空二叉树,则不是对称二叉树
if(root1 == null || root2 == null){
return false;
}
//。情况3:如果两棵二叉树都不为空,则还要进行下一步判断,如果根节点的值不相等,则不是对称二叉树
if(root1.val != root2.val){
return false;
}
//递归两棵二叉树的子节点
return isSymmetrical2Tree(root1.left,root2.right) && isSymmetrical2Tree(root1.right,root2.left);
}
}
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if(pRoot == null){ //特殊值判断,如果是空二叉树,则是对称二叉树,返回true
return true;
}
return isSymmetrical2Tree(pRoot,pRoot);
}
//该函数用于判断两棵二叉树是否是对称二叉树
public static boolean isSymmetrical2Tree(TreeNode root1,TreeNode root2){
//。情况1:如果两棵二叉树都为空,则是对称二叉树
if(root1 == null && root2 == null){
return true;
}
//。情况2:如果两棵二叉树中有一棵是空二叉树,则不是对称二叉树
if(root1 == null || root2 == null){
return false;
}
//。情况3:如果两棵二叉树都不为空,则还要进行下一步判断,如果根节点的值不相等,则不是对称二叉树
if(root1.val != root2.val){
return false;
}
//递归两棵二叉树的子节点
return isSymmetrical2Tree(root1.left,root2.right) && isSymmetrical2Tree(root1.right,root2.left);
}
}