• 对称二叉树


    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14111516.html

    对称二叉树(47min)

    题目链接:https://leetcode-cn.com/problems/symmetric-tree/submissions/

    题目

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

    例如,二叉树 [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:递归,判断根节点的左子树和右子树是否相等,然后比较左子树的左子树和右子树的右子树是否相等,如果相等,则返回true,否则返回false。

    思路2:利用队列,把根的左子树和右子树先入队列,然后判断左子树的左子树和右子树的右子树是否相等,如果相等,则返回true,否则返回false。

    代码1

    class Solution {
        public boolean isSymmetric(TreeNode root) {
            if(root==null)
            return true;
            return  Ispanduan(root.left,root.right);
        }
          public boolean Ispanduan(TreeNode left,TreeNode right){
                if(left==null&&right==null)
                    return true;
                if(left==null||right==null||left.val!=right.val){
                    return false;
                 }
                return Ispanduan(left.left,right.right)&&Ispanduan(left.right,right.left);
            
        }
    }

    结果1

    代码2

    class Solution {
        public boolean isSymmetric(TreeNode root) {
            if(root==null)
            return true;
            // Queue <TreeNode> queue=new Linkedlist();
            Queue <TreeNode> queue=new LinkedList();
            queue.add(root.left);
            queue.add(root.right);
            while(!queue.isEmpty())
            {
               TreeNode left=queue.poll();
               TreeNode right=queue.poll();
               if(left==null&&right==null)
                    continue;
                if(left==null||right==null||left.val!=right.val)
                    return false;
                queue.add(left.left);
                queue.add(right.right);
                queue.add(left.right);
                queue.add(right.left);
            }
            return true;
            
        }
    }

    结果2

     耗时:

    1.在递归代码,需要同时满足左子树的左子树和右子树的右子树,左子树的右子树和右子树的左子树需要同时相等,才能判断是镜面对称。

    2.在写完判断时,忘记加大括号,一直没有找到报错的原因。

    出来混总是要还的
  • 相关阅读:
    awk中使用shell变量
    awk的getline命令
    awk的逻辑运算符
    python之re模块
    转载:ensemble计划和数据库
    正则表达式的符号
    awk之match函数
    bash脚本之读取数据
    samtools+bcftools 进行SNP calling
    win10 系统上运行tensorflow三层卷积的方式
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14111516.html
Copyright © 2020-2023  润新知