LeetCode543题:二叉树的直径(python3)

代码思路:

先递归调用左儿子和右儿子求得它们为根的子树的深度 L和 R ,则该节点为根的子树的深度即为max(L,R)+1。该节点的 dnode值为L+R+1

递归搜索每个节点并设一个全局变量 ans记录 dnode的最大值,最后返回 ans-1 即为树的直径。

python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        self.ans = 1
        def depth(node):
            # 访问到空节点了,返回0
            if not node: 
                return 0 
            # 左儿子为根的子树的深度
            L = depth(node.left) 
            # 右儿子为根的子树的深度
            R = depth(node.right)
            # 计算d_node即L+R+1 并更新ans
            self.ans = max(self.ans,L+R+1)
            # 返回该节点为根的子树的深度
            return max(L,R)+1 
        depth(root)
        return self.ans-1
相关推荐
MgArcher1 分钟前
Python 入门核心考点:数据类型与变量全解
python
m0_662577975 分钟前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
q_354888515310 分钟前
计算机毕业设计源码:Python动漫智能推荐与可视化分析系统 Django框架 协同过滤推荐算法 可视化 数据分析 大数据 大模型(建议收藏)✅
python·scrapy·数据分析·django·课程设计·旅游·推荐算法
与虾牵手10 分钟前
写了 8 年 Python 转 Rust,我被所有权机制折磨了整整一周
python
sqyno1sky18 分钟前
机器学习模型部署:将模型转化为Web API
jvm·数据库·python
格林威19 分钟前
C++ 工业视觉实战:Bayer 图转 RGB 的 3 种核心算法(邻域平均、双线性、OpenCV 源码级优化)
开发语言·c++·人工智能·opencv·算法·计算机视觉·工业相机
Frostnova丶21 分钟前
LeetCode 3643.子矩阵垂直翻转算法解析
算法·leetcode·矩阵
2401_8512729922 分钟前
C++中的模板方法模式
开发语言·c++·算法
2401_8942419223 分钟前
C++中的策略模式进阶
开发语言·c++·算法
何政@27 分钟前
通过python 快速完成ai 构建
人工智能·python·ai·大模型·love l