题目描述
// 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() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
// 题目和 【剑指offer】28. 对称的二叉树 相同
// 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
// 内存消耗:36.5 MB, 在所有 Java 提交中击败了53.82%的用户
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null)
return true;
return isSymmetric(root.left, root.right);
}
private boolean isSymmetric(TreeNode l, TreeNode r) {
if (l == null && r == null)
return true;
else if (l == null || r == null)
return false;
else if (l.val == r.val)
return isSymmetric(l.right, r.left) && isSymmetric(l.left, r.right);
else
return false;
}
}