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
相关推荐
zhglhy4 分钟前
Jaccard相似度算法原理及Java实现
java·开发语言·算法
workflower8 分钟前
PostgreSQL 数据库的典型操作
数据结构·数据库·oracle·数据库开发·时序数据库
岁月宁静13 分钟前
🐍 Python 核心知识点:从零开始快速构建 Python 知识体系
python
仰泳的熊猫20 分钟前
1140 Look-and-say Sequence
数据结构·c++·算法·pat考试
handuoduo123427 分钟前
SITAN中avp必要性分析
人工智能·算法·机器学习
zl_vslam28 分钟前
SLAM中的非线性优-3D图优化之相对位姿Between Factor右扰动(八)
人工智能·算法·计算机视觉·3d
C嘎嘎嵌入式开发30 分钟前
deepseek-r1大模型的本地部署
人工智能·python·神经网络·机器学习
EXtreme3533 分钟前
栈与队列的“跨界”对话:如何用双队列完美模拟栈的LIFO特性?
c语言·数据结构·leetcode·双队列模拟栈·算法思维
柯南二号33 分钟前
【大前端】【Android】用 Python 脚本模拟点击 Android APP —— 全面技术指南
android·前端·python
码界奇点38 分钟前
基于Django与Vue.js的RBAC权限管理系统设计与实现
vue.js·python·车载系统·django·毕业设计·源代码管理