每日一练:二叉树的直径

543. 二叉树的直径 - 力扣(LeetCode)

一、题目要求

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

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

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

示例 1:

输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:

输入:root = [1,2]
输出:1

提示:

  • 树中节点数目在范围 [1, 104] 内
  • -100 <= Node.val <= 100

二、解法1-递归 O(N)

        因为题目说到最长路径可能不经过根节点,所以递归每个节点的左右子树,得到它们的高度,如果加起来大于ret,就更新ret,然后返回上一个节点的高度。

class Solution {int height(TreeNode* root){if(root == nullptr)return 0;int leftHeight = height(root->left);int rightHeight = height(root->right);if(leftHeight+rightHeight > ret)ret = leftHeight+rightHeight;return max(leftHeight,rightHeight)+1;}
public:int diameterOfBinaryTree(TreeNode* root) {height(root);return ret;}
private:int ret = 0;
};

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2024.9.23 作业

统计家目录下.c文件的个数 定义一个稀疏数组(下标不连续)&#xff0c;写一个函数&#xff0c;求该稀疏数组的和&#xff0c;要求稀疏数组中的数值通过参数传递到函数中。 arr([2]9 [4]8 [30]23 [24]3 [21]7) 思维导图

高效高质量SCI论文撰写及投稿

第一章、论文写作准备即为最关键 1、科技论文写作前期的重要性及其分类 2、AI工具如何助力学术论文 3、研究主题确定及提高创新性 兴趣与背景&#xff1a;选择一个您感兴趣且有背景知识的研究领域。 创新性&#xff1a;选题和研究设计阶段如何提高学术创新性的方法。 研究缺…

【React】原理

笔记来源&#xff1a;小满zs 虚拟 DOM // react.js // jsx > babel | swc > React.createElement const React {createElement(type, props, ...children) {return {type,props: {...props,children: children.map(child > typeof child object ? child : React.cr…

3 pyqt5 Layout布局(保证主界面缩放各组件也对应缩放)== 主要有Qt Designer和完全代码设置两种设计方式(根据自己情况选择即可)

文章目录 前言一、Layout的类别二、使用Qt Designer进行Layout布局三、完全使用代码进行Layout布局前言 本节我们的http测试的例子,只实现界面方面的逻辑,底层不用管。我们主要的目的是通过这个例子设计界面布局。 我们前面写的界面程序有个问题,如果你用鼠标拖拽主窗口边…

超分之SPIN

Lightweight image super-resolution with superpixel token interaction[C]利用超像素token交互实现轻量级图像超分辨率Zhang A, Ren W, Liu Y, et al.Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023: 12728-12737. 文章目录 摘要1. 引言2. …

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Mysql集群

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Mysql集群 MySQL 集群是一种高可用性、高性能的数据库解决方案&#xff0c;旨在支持分布式应用程序&#xff0c;允许多个 MySQL 实例以集群的方式共同工作&#xff0c;提供数据冗余和故障恢复能力 搭建Mysql集群…

C++11新特性和扩展(1)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 C11新特性和扩展 收录于专栏 [C进阶学习] 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.C11简介 2. 列表初始…

数据转换器——佛朗哥Chater2

【注:本文基于《数据转换器》一书进行学习、总结编撰,适合新手小白进行学习】 目录 2.1 数据转换器类别 2.2 工作条件 2.3 转换器性能参数 2.3.1 基本特性参数 2.4 静态性能参数 2.5 动态性能参数 2.6 数字和开关性能参数 2.1 数据转换器类别 转换器类型可以被分为两…

JUC高并发编程1:JUC概述

1 什么是JUC 1.1 JUC简介 JUC就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包&#xff0c;JDK 1.5 开始出现的。 1.2 进程与线程 进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统中用于实现多任务处理的两种基本概…

python爬虫案例——抓取链家租房信息

文章目录 1、任务目标2、分析网页3、编写代码1、任务目标 目标站点:链家租房版块(https://bj.lianjia.com/zufang/) 要求:抓取该链接下前5页所有的租房信息,包括:标题、详情信息、详情链接、价格 如: 2、分析网页 用浏览器打开链接,按F12或右键检查,进入开发者模式;因…

spring 代码执行(CVE-2018-1273) 靶场攻略

靶场环境 vulhub/spring/CVE-2018-1273 漏洞复现 1.访问靶场地址 2.填写注册信息&#xff0c;bp抓包 3.添加poc username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/zcc")]&password&repeatedPassword 4.…

红黑树:强大的数据结构之插入详解,附图

一、红黑树概述 红黑树是一种自平衡二叉查找树&#xff0c;具有以下性质&#xff1a;节点要么是红色要么是黑色&#xff1b;根节点是黑色&#xff1b;每个叶子节点&#xff08;NIL 节点&#xff09;是黑色&#xff1b;每个红色节点的两个子节点都是黑色&#xff1b;从任一节点到…

Matlab|考虑柔性负荷的综合能源系统低碳经济优化调度

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序主要实现的是考虑柔性负荷的综合能源系统低碳经济优化调度&#xff0c;模型参考《考虑柔性负荷的综合能源系统低碳经济优化调度》&#xff0c;求解方法采用的是混合整数规划算法&#xff0c;通过matlabc…

C++_23_STL容器

文章目录 STL容器概念常用容器A string作用构造函数基本赋值操作获取字符串长度存取字符操作拼接操作查找和替换注意:查找是不存在返回-1比较操作截取操作插入与删除string与char * 转换 B vector概述与数组区别迭代器构造函数赋值操作插入与删除取值操作大小相关存储自定义类型…

【逐行注释】扩展卡尔曼滤波EKF和粒子滤波PF的效果对比,MATLAB源代码(无需下载,可直接复制)

文章目录 总述源代码运行结果改进方向总述 本代码使用 M A T L A B MATLAB MATL</

用c++实现分数(fraction)类

这个想法已经有3周&#xff0c;于是今天将它实现了。 Step 1基础&#xff1a; 我们需要定义一个class——fraction&#xff0c;全部属性定义为public class fraction{ public:}; 现在&#xff0c;让我们添加2个元素&#xff0c;分子和分母——fz和fw Step 1.1添加分子分母…

Linux C++ 开发9 - 手把手教你使用gprof性能分析工具

1. 什么是gprof&#xff1f;2. gprof的用法 2.1. 编译程序2.2. 运行程序2.3. 生成分析报告2.4. gprof常用参数说明2.5. 分析报告解读 2.5.1. Flat profile 各个字段的含义2.5.2. Call graph 各个字段的含义 3. Demo演示 3.1. demo04.cpp 源码3.2. 编译、运行和分析3.3. 查看分…

快速搭建Kubernetes集群

快速搭建Kubernetes集群 1 MacOS 1.1 下载 从 docker 下载 docker-desktop (opens new window)&#xff0c;并完成安装 1.2 启用 k8s 集群 启动 docker-desktop&#xff0c;打开preference 面板 切换到 Kubernetes 标签页&#xff0c;并勾选启动 Enable Kubernetes&#xff0c;…

个人防护装备检测系统源码分享

个人防护装备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

vcruntime140_1.dll无法继续执行代码的6种解决方法

在计算机编程和软件开发中&#xff0c;我们经常会遇到各种错误和问题。其中&#xff0c;vcruntime140_1.dll无法继续执行代码是一个常见的问题。这个问题可能会导致程序崩溃&#xff0c;影响我们的工作进度。因此&#xff0c;了解这个问题的原因以及如何解决它是非常重要的。 …