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
相关推荐
Wang201220133 分钟前
RNN和LSTM对比
人工智能·算法·架构
xueyongfu7 分钟前
从Diffusion到VLA pi0(π0)
人工智能·算法·stable diffusion
智航GIS14 分钟前
2.3 运算符详解
开发语言·python
屋顶那猫14 分钟前
使用pyinstaller打包pytest项目
python·pytest
永远睡不够的入17 分钟前
快排(非递归)和归并的实现
数据结构·算法·深度优先
cheems952718 分钟前
二叉树深搜算法练习(一)
数据结构·算法
web3.088899918 分钟前
接入API-自动化批量获取淘宝商品详情数据
开发语言·python
sin_hielo20 分钟前
leetcode 3074
数据结构·算法·leetcode
刹那间的回眸x.y24 分钟前
UnitTestReport挺好用
python
Yzzz-F26 分钟前
算法竞赛进阶指南 动态规划 背包
算法·动态规划