一、题目
给定一个根节点root,检查是否轴对称。

二、思路
1、这个函数是给定一个节点判断是否轴对称,不能在这个函数里写递归,因为左子树、右子树不对称,可能整个树是对称的。所以写一个传左右子节点的函数,判断是否轴对称。终止条件:左子节点和右子节点都为null返回true。当左子节点右子节点有一个为null,则不对称返回false,判断左右子节点的值如果不等则返回false。
三、代码
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null) return true;
return isSymmetric(root.left,root.right);
}
public boolean isSymmetric(TreeNode left,TreeNode right){
if(left == null && right == null) return true;//注意两行的顺序
if(left == null || right == null) return false;//注意两行的顺序
if(left.val != right.val) return false;
return isSymmetric(left.left,right.right) && isSymmetric(left.right,right.left);
}
}
四、语法
A && B 只有当 A 为真 且 B 为真 时,整个表达式才为 true
A || B 只要 A 为真 或 B 为真(或两者都真),整个表达式就是 true
238

被折叠的 条评论
为什么被折叠?



