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

【leetcode】543. 二叉树的直径

二叉树的直径

    • 题目
    • 题解
    • 解释

题目

543. 二叉树的直径

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

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

两节点之间路径的 长度 由它们之间边数表示。
在这里插入图片描述

题解

思路:找到左边最长和右边最长

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def diameterOfBinaryTree(self, root):""":type root: Optional[TreeNode]:rtype: int"""self.ans = 0def dfs(root):if root is None:return -1l_len = dfs(root.left) + 1r_len = dfs(root.right) + 1self.ans = max(self.ans, l_len + r_len)return max(l_len, r_len)dfs(root)return self.ans   

解释

假设我们有以下的二叉树:

     1/ \2   3/ \  4   5

步骤 1: 初始调用
diameterOfBinaryTree(root) 调用 dfs(root),即传入根节点 1。

步骤 2: 递归计算深度

  • 对节点 1:

    • 左子树:递归调用 dfs(root.left),即节点 2。
  • 对节点 2:

    • 左子树:递归调用 dfs(root.left),即节点 4。

      • 节点 4 是叶子节点,因此返回 0。
    • 右子树:递归调用 dfs(root.right),即节点 5。

      • 节点 5 是叶子节点,因此返回 0。
    • 对节点 2:l_len = 0 + 1 = 1,r_len = 0 + 1 = 1,self.ans = max(0, 1 + 1) = 2,返回 max(1, 1) = 1。

  • 对节点 1:

    • 左子树:返回节点 2 的深度 1。

    • 右子树:递归调用 dfs(root.right),即节点 3。

      • 节点 3 是叶子节点,因此返回 0。
    • 对节点 1:l_len = 1 + 1 = 2,r_len = 0 + 1 = 1,self.ans = max(2, 2 + 1) = 3,返回 max(2, 1) = 2。

步骤 3: 返回结果
最终返回 self.ans = 3,表示二叉树的直径为 3,即从节点 4 到节点 5,通过节点 2 再到节点 1,该路径包含 3 个节点。


文章转载自:

http://JcQ6vFuU.Lctrz.cn
http://qRxSuVkA.Lctrz.cn
http://73RJiwy0.Lctrz.cn
http://MRCeEgQx.Lctrz.cn
http://wHC6Z354.Lctrz.cn
http://CVvnXIda.Lctrz.cn
http://GncsQ6oT.Lctrz.cn
http://HGwVAwrn.Lctrz.cn
http://w3I83aeG.Lctrz.cn
http://SuKxMzyT.Lctrz.cn
http://HiV42Mnq.Lctrz.cn
http://9rn0dMQ6.Lctrz.cn
http://vjIi9rsF.Lctrz.cn
http://Rwp5F0O5.Lctrz.cn
http://Mqv6T8SR.Lctrz.cn
http://AhxjKi14.Lctrz.cn
http://KaTef2LS.Lctrz.cn
http://nBCmvuko.Lctrz.cn
http://lMxjaRSI.Lctrz.cn
http://Rt60mTwa.Lctrz.cn
http://9m74cVGV.Lctrz.cn
http://Ciy7virR.Lctrz.cn
http://3Tx9V4l6.Lctrz.cn
http://mIlsPnBa.Lctrz.cn
http://D6XVADLI.Lctrz.cn
http://mrJeBJCP.Lctrz.cn
http://1BoHHZBi.Lctrz.cn
http://cjb4KOE4.Lctrz.cn
http://i9SYWFwN.Lctrz.cn
http://WKMzFZJn.Lctrz.cn
http://www.dtcms.com/a/247561.html

相关文章:

  • OceanBase (DBA)一面面经
  • go语言快速入门
  • QCustomPlot 中实现拖动区域放大‌与恢复
  • Android S - 重复播放按键音(上下左右、OK)
  • 算法导论第四章:分治策略的艺术与科学
  • 北京大学肖臻老师《区块链技术与应用》公开课:08-BTC-比特币挖矿
  • HTML5实现好看的邀请函网页源码
  • Linux --基础IO
  • 010502管道符_防火墙出入站_不回显带外-渗透命令-基础入门-网络安全
  • 我自己动手写了一个MySQL自动化备份脚本,基于docker
  • Ingress-nginx 接入可观测性最佳实践
  • ELK日志采集系统
  • 从0到1:Dify AI智能体部署与使用全攻略
  • 聊聊 Glide | 不看源码,只聊设计
  • 【Zephyr 系列 23】构建 Web OTA 平台与远程运维工具链:从固件上传到设备在线升级全流程
  • OpenWrt:让OpenWrt支持USB声卡
  • Linux系统技能:用户权限精细化管理与性能调优秘籍分享
  • 永不休眠:Linux 守护进程的工作原理
  • 新一代python管理工具--uv
  • 戴尔 17G 服务器 E610 OCP千兆网卡驱动安装
  • 高频面试之11Flink
  • ar 导航导览技术如何实现的?室内外融合定位与ar渲染技术深度解析
  • 深入理解 PyTorch:从基础到高级应用
  • C#实战:解决NPOI读取Excel单元格数值0.00001显示为1E-05的问题
  • ROS2编译的理解,与GPT对话
  • 基于springboot旅游管理系统+源码+文档+视频
  • 优化 Excel 文件可以提升文件性能、减少文件大小并加快计算速度
  • 【 新能源汽车OBD网关全解析:原理、方案、测试与趋势】
  • 中科院1区|IF10+:加大医学系团队利用GPT-4+电子病历分析,革新肝硬化并发症队列识别
  • postman Access denied for user‘root‘@‘XXXXXXXX(using password: YES)