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
相关推荐
头发够用的程序员几秒前
C++和Python面试经典算法汇总(一)
开发语言·c++·python·算法·容器·面试
夜猫逐梦13 分钟前
【逆向经验】一篇文章讲透为什么CE搜不到Python游戏的内存值
开发语言·python·游戏
淡海水21 分钟前
【AI模型】模型量化技术详解
人工智能·算法·机器学习
Zik----22 分钟前
CILP模型讲解
人工智能·python·多模态
炸膛坦客23 分钟前
嵌入式 - 数据结构与算法:(1-1)数据结构 - 顺序表(Sequential List)
数据结构·算法·嵌入式
陈eaten28 分钟前
汇编使用AES指令集实现AES解密
汇编·python·aes解密·aes指令集
水龙吟啸32 分钟前
数据结构与算法随机复习–Day1
数据结构·c++·算法
SilentSamsara38 分钟前
闭包的本质:Python 如何捕获自由变量
开发语言·python·青少年编程·pycharm
生成论实验室44 分钟前
《事件关系阴阳博弈动力学:识势应势之道》第八篇:认知与反思关系——探索、定位与延续
人工智能·算法·架构·知识图谱·创业创新
段一凡-华北理工大学1 小时前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章10:实时预警机制:跑在问题前面!
网络·人工智能·python·知识图谱·高炉炼铁·工业智能体