递归,当两个节点不同时为空或值不一样时为false,当同时为空或值相等时,判断两个节点的子节点是否为镜像。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
boolean isMirroring(TreeNode leftNode,TreeNode rightNode){
if(leftNode==null && rightNode==null){
return true;
}
else if(leftNode==null || rightNode==null){
return false;
}
//左右节点相同,则判断左节点的左子节点和右节点的右子节点&&左节点的右子节点和右节点的左子节点是不是镜像
if(leftNode.val==rightNode.val){
return isMirroring(leftNode.left,rightNode.right) && isMirroring(leftNode.right,rightNode.left);
}
else{
return false;
}
}
public boolean isSymmetric(TreeNode root) {
if(root==null){
return true;
}
return isMirroring(root,root);
}
}