《代码随想录》--二叉树(二)

《代码随想录》--二叉树

  • 101.对称二叉树
    • 相关题目

101.对称二叉树

leetcode链接
在这里插入图片描述

代码实现

  • 递归
class Solution {public boolean isSymmetric(TreeNode root) {if(root == null) return true;return compare(root.left,root.right);}public boolean compare(TreeNode left,TreeNode right){if(left == null && right == null) return true;else if(left != null && right == null) return false;else if(left == null && right != null) return false;else if(left.val != right.val) return false;boolean out = compare(left.left,right.right);boolean in = compare(left.right,right.left);return out && in;}
}
  • 迭代
class Solution {public boolean isSymmetric(TreeNode root) {if(root == null) return true;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root.left);queue.offer(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.offer(left.left);queue.offer(right.right);queue.offer(left.right);queue.offer(right.left);}return true;}
}

分析

  • 递归法
    • 传入左节点和右节点
    • 判断一下他们的值是否为空,是否相等
    • 再传入外侧的节点,然后传入内侧的节点
    • 内外都对称才能返回true
  • 迭代法
    • 使用队列来存储两个节点
    • 每个节点成对加入成对取出比较

相关题目

相同的树
在这里插入图片描述

代码

  • 递归
class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p == null && q == null) return true;else if(p == null && q != null) return false;else if(p != null && q == null) return false;else if(p.val != q.val) return false;else return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);   }
}
  • 迭代
class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p == null && q == null) return true;Queue<TreeNode> queue = new LinkedList<>();queue.offer(p);queue.offer(q);while(!queue.isEmpty()){p = queue.poll();q = queue.poll();if(p == null && q == null) continue;if(p == null || q == null || p.val != q.val) return false;queue.offer(p.left);queue.offer(q.left);queue.offer(p.right);queue.offer(q.right);}return true;}
}

另一棵树的子树
在这里插入图片描述

代码

  • 双递归
class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root == null && subRoot == null) return true;else if(root == null || subRoot == null) return false;else return isSameTree(root,subRoot) || isSubtree(root.left,subRoot) || isSubtree(root.right,subRoot);}public boolean isSameTree(TreeNode p,TreeNode q){if(p == null && q == null) return true;else if(p == null || q == null) return false;else if(p.val != q.val) return false;else return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);}
}

) return false;
else return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286082.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】springboot整合minio详解

目录 一、前言 二、Minio 概述 2.1 Minio简介 2.1 Minio特点 三、Minio 环境搭建 3.1 部署过程 3.1.1 拉取镜像 3.1.2 启动容器 3.1.3 访问web页面 四、Minio基本使用 4.1 基本概念 4.2 上传文件演示 4.3 用户管理 4.4 Java操作Minio 4.4.1 导入依赖 4.4.2 上传…

Java操作windows系统功能(二)

Java可以通过调用Windows系统的API来操作Windows&#xff0c;实现一些基本的操作&#xff0c;例如打开、关闭窗口、创建文件夹、复制、删除文件等。 具体操作可以引入Java的java.awt和java.awt.event包&#xff0c;并使用java.awt.Desktop类来进行操作。 以下是一些常用的操作…

阿里云登录镜像仓库报错: Error response from daemon: Get https://

阿里云登录镜像仓库报错: Error response from daemon: Get https:// 1. 故障现象 开发反应自用笔记本连接镜像仓库是正常的,但通过服务器连接镜像仓库一直失败. 报错信息如下: Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthoriz…

避坑指南:uni-forms表单在uni-app中的实践经验

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;uni-app篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:uni-app中forms表单的避坑指南篇 该篇章已被前端圈子收录,点此处进入即可查看更多优质内…

低代码软件开发的革命

一、前言 如果一个概念能在科技圈火起来&#xff0c;它往往兼具字面简明和内涵丰富的特征&#xff0c;并具有某种重塑产业格局的潜力。低代码&#xff08;Low Code&#xff09;就是这样一个典型。顾名思义&#xff0c;低代码是指少用代码&#xff0c;甚至不用代码&#xff0c;仅…

JVM基础扫盲

什么是JVM JVM是Java设计者用于屏蔽多平台差异&#xff0c;基于操作系统之上的一个"小型虚拟机"&#xff0c;正是因为JVM的存在&#xff0c;使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次&#xff0c;在任何操作系统都可以以相…

读书心得(表达式与基本语句篇)

内容取自《高质量C/C编程指南》 读者可能怀疑&#xff1a;连 if、for、while、goto、switch 这样简单的东西也要探讨编程风格&#xff0c;是不是小题大做&#xff1f;我真的发觉很多程序员用隐含错误的方式写表达式和基本语句&#xff0c;我自己也犯过类似的错误。表达式和语句…

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

进入VirtuakBox官网&#xff0c;网址链接&#xff1a;Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接&#xff1a;Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…

MyBatis:一文带你全面了解

文章来源&#xff1a;MyBatis&#xff1a;一文带你全面了解 - 知乎 MyBatis&#xff1a;一文带你全面了解 1. 概述 1.1 MyBatis简介 MyBatis是一个基于Java语言的持久层框架&#xff0c;它通过XML描述符或注解将对象与存储过程或SQL语句进行映射&#xff0c;并提供了普通SQ…

3.2 内容管理模块 - 课程分类、新增课程、修改课程

内容管理模块-课程分类、新增课程、修改课程 文章目录 内容管理模块-课程分类、新增课程、修改课程一、课程分类1.1 课程分类表1.2 查询树形结构1.2.1 表自连接1.2.2 SQL递归 1.3 Mapper1.4 Service1.5 Controller1.6 效果图 二、添加课程2.1 需求分析2.2 数据表2.2.1 课程基础…

挑战52天学小猪佩奇笔记--day26

52天学完小猪佩奇--day26 ​【本文说明】 本文内容来源于对B站UP 脑洞部长 的系列视频 挑战52天背完小猪佩奇----day26 的视频内容总结&#xff0c;方便复习。强烈建议大家去关注一波UP&#xff0c;配合UP视频学习。 day26的主题&#xff1a;堆雪人 猜台词&#xff1a; 旁白&am…

前端加载访问速度优化(Nginx)

当前端部署文件过大时很容易造成网页加载慢的现象&#xff0c;为了提升加载速度&#xff0c;提供nginx的三种解决方案。 文章目录 1. gzip压缩2. 优化 keepalive 连接3.配置缓存注意事项总结 1. gzip压缩 往nginx.conf 的 http内容段落中加入 # gzip configgzip on;gzip_min_l…