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

题解思路

终于到树了,数和图占据了算法界的半壁江山,二叉树作为树中最经典的模型,算法题也是五花八门

普通二叉树、满二叉树、对称二叉树、完全二叉树、线索二叉树等等的概念不是特别难,区分起来还是很简单的

可是一到了算法里,我就有点摸黑了,就这道题而言,只是判断是否对称,经典的递归问题,左右递归判断是否相等

定义二叉树的代码给你了,只需要从根出发左子树的往,左右子树往右,右子树往左,左子树往右,排除特殊情况即可

正确代码

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

    private boolean check(TreeNode a, TreeNode b) {
        //树为空则返回true
        if ((a == null) && (b == null))
            return true;
        //左右子树有一棵为空一棵不为空返回false
        if ((a == null) || (b == null))
            return false;
        //判断节点值是否相等,和左右相反着递归
        return (a.val == b.val) && check(a.left, b.right) && check(a.right, b.left);
    }
}

总结

算法是写出来了,但是我在验证这一块偷了懒,直接就在网站上验证提交了,但是数组和二叉树转换我是真的没自己敲过

自己学的时候也知道层序遍历、先序遍历、后序遍历、深度优先遍历和广度优先遍历,可是自己没有验证过

如果看到这篇文章的你也没有自己试验过,那就快动手敲起来,我今天是实在有些累了,就偷个懒吧

文章如果存在问题或者有更好的题解,希望大佬斧正和评论,各自努力,你我最高处见
posted @ 2021-03-05 20:38  21岁还不是架构师  阅读(54)  评论(0编辑  收藏  举报