【每日力扣】543. 二叉树的直径与101. 对称二叉树

在这里插入图片描述

🔥 个人主页: 黑洞晓威
😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害

543. 二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root

两节点之间路径的 长度 由它们之间边数表示。

解题思路

  1. 递归计算深度: 使用递归计算每个节点的左子树深度和右子树深度,然后返回以该节点为根节点的子树的深度。
  2. 更新直径: 在递归过程中更新直径,直径值为左子树深度加右子树深度的最大值。
  3. 结果返回: 最终得到的直径就是二叉树的直径。
image-20240508112834385

代码实现

class Solution {int diameter = 0;public int diameterOfBinaryTree(TreeNode root) {calculateDepth(root);return diameter;}private int calculateDepth(TreeNode node) {if (node == null) {return 0;}int leftDepth = calculateDepth(node.left);int rightDepth = calculateDepth(node.right);diameter = Math.max(diameter, leftDepth + rightDepth);return Math.max(leftDepth, rightDepth) + 1;}
}

101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

image-20240508112906353

解题思路

  1. 定义一个递归函数,比较左右子树是否镜像对称。
  2. 递归地判断左右节点是否镜像对称,即左子树的左节点与右子树的右节点比较,左子树的右节点与右子树的左节点比较。
  3. 如果当前节点为空,返回 true。如果左右子树其中一个为空或者值不相等,返回 false。

代码实现

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

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

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

相关文章

芋道源码的Springboot 项目打包,配置和依赖包分开

Springboot 项目,把依赖包和开发的应用都打在一个jar 里很简单,但有个问题是,修改点东西就要再次全量更新。 这里介绍如何用assembly 来实现不打依赖包。 1、 在主模块中,需要引入 assembly.xml配置: src/main/asse…

DUX 主题 版本:8.2 WordPress主题优化版

主题下载地址:DUX 主题优化版.zip 支持夜间模式、快讯、专题、百度收录、人机验证、多级分类筛选,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、自动缩略图

如何通过wifi网络将串口数据发送到多个设备

摘要:当lora电台的速率无法满足高速传输时,可以考虑用“串口服务器”。本文介绍一下如何使用TP-LINK的TL-CPE300D实现一对多的数据发送。 当前也有使用lora电台的,但是lora电台支持的速率有限,可能最大支持到9600,甚至…

python数据分析所需要了解的结构基础

Python语言基础——结构基础 前言一、列表列表的介绍列表的语法示例注意要点符号元素切片运算符示例 二、字典字典的介绍字典的特点字典的语法 三、元组元组的介绍元组的语法示例 四、字符串字符串的介绍字符串的语法 五、操作运算符算术运算符赋值运算符比较运算符逻辑运算符位…

CMake创建跨平台OPenGL工程(学习笔记)

一、跨平台环境基本配置 1、环境搭建 1)linux OpenGL环境搭建参考:ubuntu18.04 OpenGL开发(显示YUV)_ubuntu opengl-CSDN博客 https://blog.51cto.com/cerana/6433535 2)windows下环境搭建 OpenGLVisual Studio20…

TensorFlow、pytorch和python对应的版本关系

安装深度学习框架的时候需要考虑版本的关系,不然装了用不了就尴尬了。 深度学习首先得问题就是用CPU跑,还是GPU跑。。当然有英伟达显卡的都想用GPU跑,不然买显卡是做啥、、GPU跑得多块,一下就训练完了。但是有的同学没得gpu&…

操作系统——进程控制

创建进程 fork fork是一个系统调用函数,用来创建子进程,通过多个执行流完成任务。子进程和父进程共用一份代码,子进程数据使用写时拷贝,即子进程数据在创建的时候和父进程相同,但是当要修改数据的时候,子进…

【FreeRTOS 快速入门】-- 1、STM32工程移植FreeRTOS

目录 一、新建STM32工程 为了示范完整的移植过程,我们从0开始,新建一个标准的STM32点灯工程。 (本篇以CubeMX作示范,CubeIDE操作近同,可作对比参考) 1、新建工程 选择 芯片型号 新建工程 2、搜索芯片型号…

win10 远程桌面无法连接,解决Win10远程桌面无法连接问题的方法

Windows 10操作系统中,远程桌面是一项非常实用的功能,它允许用户从另一台设备远程访问和控制另一台计算机。然而,有时候用户可能会遇到Win10远程桌面无法连接的问题。本文将探讨可能导致这个问题的原因,并提供相应的解决方案。 确…

7-38 数列求和-加强版

题目链接&#xff1a;7-38 数列求和-加强版 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <stdio.h> #include <string.h> #include <malloc.h>void addTerm(char *sum, int A, int N);int main() {int A, N;char *sum;// 读…

C++音视频开发面试题

下面是音视频开发面试题精选&#xff1a; 1、纹理抗锯齿有哪些算法&#xff1f;各有哪些利弊&#xff1f;2、使用 OpenGL PBO 为什么能提高效率&#xff1f;3、iOS 如何使用分段转码&#xff0c;如何设置分片大小&#xff1f;4、VideoToolbox 中是不是不存在平面格式&#xff…

前端css中径向渐变(radial-gradient)的使用

前端css中径向渐变的使用 一、前言二、主要内容说明&#xff08;一&#xff09;、径向渐变的形状1.椭圆形渐变&#xff08;ellipse&#xff09;&#xff0c;源码12.源码1运行效果3.圆形渐变&#xff08;circle&#xff09;&#xff0c;源码24.源码2运行效果 &#xff08;二&…