• 剑指 Offer 28. 对称的二叉树(简单)


    通过率 58.0%

    题目链接

    题目描述:

    请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

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

    示例 1:

    输入:root = [1,2,2,3,4,4,3]
    输出:true

    示例 2:

    输入:root = [1,2,2,null,3,null,3]
    输出:false

    限制:

    0 <= 节点个数 <= 1000

    思路:

    从根节点 root 出发,让它的左子树 tl 与右子树 tr 的值比较(即 root.left 与 root.right 的val)

    再让 tl 的左子树与 tr 的右子树的值比较, tl 的右子树与 tr 的左子树的值比较(即 tl.left 与 tr.right,tl.right 与 tr.left 的val)

    依此类推,每次比较的都是对称的节点,就能判断出来了

     1 /*JavaScript*/
     2 /**
     3  * Definition for a binary tree node.
     4  * function TreeNode(val) {
     5  *     this.val = val;
     6  *     this.left = this.right = null;
     7  * }
     8  */
     9 /**
    10  * @param {TreeNode} root
    11  * @return {boolean}
    12  */
    13 var mirror = function(treel, treer) {
    14     if(!treel && !treer) return true
    15     if(!treel || !treer || treel.val !== treer.val) return false
    16     return mirror(treel.left, treer.right) && mirror(treel.right, treer.left)
    17 }
    18 
    19 var isSymmetric = function(root) {
    20     // 若传入的为空树,直接返回true
    21     return !root || mirror(root.left, root.right)
    22 };
  • 相关阅读:
    Java tomcat max-http-header-size配置导致的oom
    Idea修改jvm参数
    Java List的SubList使用问题
    Java Arrays.asList的三个坑
    Java 重写equals的时候为什么一定要重写hashcode-一个例子
    远心镜头
    镜头常识总结
    halcon中保存图像jpeg的压缩比
    红外光 相机拍照
    电磁波的穿透能力总结
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/15149675.html
Copyright © 2020-2023  润新知