当前位置: 首页 > news >正文

每日一练:二叉树的直径

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.mrgr.cn/news/34601.html

相关文章:

  • matlab之数据处理:滑动平均滤波算法与五点三次平滑算法
  • 828华为云征文 | 将Vue项目部署到Flexus云服务器X实例并实现公网访问
  • 【学习笔记】Linux系统基础知识3 —— cd命令详解
  • 【我的 PWN 学习手札】House of Botcake —— tcache key 绕过
  • 2024个人简历模板免费可编辑,可能是整理最全的简历(支持Word格式下载)
  • Set 和 Map 的模拟实现
  • 【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
  • c++9月23日
  • 【编程底层原理】亿级数据表查询最后10条记录limit 99999990,10性能为啥特慢,而且数据库都被查宕机了
  • Java Integer 缓存机制:小镇的居民与大城市的拥堵
  • 小新 Pro13 + windows 11 家庭中文版(网络适配器及地址配置)
  • DSP学习00-F28379D学习准备(了解一个工程的构成)
  • 什么是ELK
  • 代码随想录冲冲冲 Day53 图论Part5
  • 技术小谈|反射和类加载的一个简单应用
  • 解密.baxia勒索病毒:.baxia勒索病毒的攻击手法及防护建议
  • Avatarify——实时面部替换工具,允许用户通过网络摄像头将自己的表情映射到虚拟人物或名人头像上
  • webservice cxf框架 jaxrs jaxws spring整合 接口测试方法 wsdl报文详解 springboot整合 拦截器 复杂参数类型
  • 苍穹外卖学习笔记(十)
  • 什么是反射,反射用途,spring哪些地方用到了反射,我们项目中哪些地方用到了反射