剑指 Offer 28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的
对称的情况:
左右子树同时为空则为对称
左右子树有一个为空则为不对称
左右子树同时存在 但值不同 则为不对称
先判断树是否为空,为空直接true
上述为对称的三种,递归的方式,
首先需要递归结束条件,就是left和right为null时
left和right的val不相等时
跳出递归
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null){
return true;
}
return help(root.left,root.right);
}
public boolean help(TreeNode left,TreeNode right){
if(left==null||right==null){
return left==right;
}
if(left.val!=right.val){
return false;
}
return help(left.left,right.right) && help(left.right,right.left);
}
}
关键在于递归时判断什么可以结束递归