程序员社区

LeetCode-101-对称二叉树

LeetCode-101-对称二叉树

101. 对称二叉树

难度简单1407收藏分享切换为英文接收动态反馈

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [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

进阶:

你可以运用递归和迭代两种方法解决这个问题吗?

class Solution {
    public boolean isSymmetric(TreeNode root) {
        return isMirror(root, root);
    }

    // 一棵树是原始树  head1
    // 另一棵是翻面树  head2
    public static boolean isMirror(TreeNode head1, TreeNode head2) {
        if (head1 == null && head2 == null) {
            return true;
        }
        if (head1 != null && head2 != null) {
            return head1.val == head2.val 
                    && isMirror(head1.left, head2.right) 
                    && isMirror(head1.right, head2.left);
        }
        // 一个为空,一个不为空  false
        return false;
    }
}
LeetCode-101-对称二叉树插图
image-20210604101859572
赞(0) 打赏
未经允许不得转载:IDEA激活码 » LeetCode-101-对称二叉树

一个分享Java & Python知识的社区