辣条走起,每月的leetcode刷题99元奖励就靠大家啦~
今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。
每天一道leetcode-101对称二叉树 分类:二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 说明:
如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
思路
代码
/**
* 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; //根节点是空,返回true
}else {
return isSymmetric(root.left, root.right);//然后进行递归,思路的实现
}
}
private boolean isSymmetric(TreeNode left, TreeNode right) {
if (left == null && right == null) {//左右子树都是空,肯定对称,true
return true;
}else if (left == null || right == null) {
return false;//左右子树只有一个为空,那么返回false
}
if(left.val != right.val)//左右子树都不为空,但是值不相等,返回false
return false;
//这里是左右子树的值相等,然后递归判断每个子树
return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
}
}
代码截图(避免乱码)