Leetcode 543. 二叉树的直径

题目描述:
给你一棵二叉树的根节点,返回该树的 直径 。

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

示例 1:
在这里插入图片描述
输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:
输入:root = [1,2]
输出:1

思路:
对于该节点的左儿子向下遍历经过最多的节点数 L (即以左儿子为根的子树的深度) 和其右儿子向下遍历经过最多的节点数 R (即以右儿子为根的子树的深度),那么以该节点为起点的路径经过节点数的最大值即为 L+R+1。

算法流程:
定义一个递归函数 depth(node) 计算 node,函数返回该节点为根的子树的深度。先递归调用左儿子和右儿子求得它们为根的子树的深度 L 和 R ,则该节点为根的子树的深度即为max(L,R)+1,该节点的node值为L+R+1。

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

python:

class Solution:
    def diameterOfBinaryTree(self, root: TreeNode) -> int:
    	# 初始化节点数为1
        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

相关推荐

  1. leetcode543--直径

    2024-03-13 23:16:03       34 阅读
  2. 543. 直径

    2024-03-13 23:16:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 23:16:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 23:16:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 23:16:03       82 阅读
  4. Python语言-面向对象

    2024-03-13 23:16:03       91 阅读

热门阅读

  1. 爬虫技术抓取网站数据

    2024-03-13 23:16:03       41 阅读
  2. Linux系统——命令行速查表

    2024-03-13 23:16:03       36 阅读
  3. 安卓native编程

    2024-03-13 23:16:03       46 阅读
  4. 【C++】如何输入输出未知长度的二维数组?

    2024-03-13 23:16:03       248 阅读
  5. Rust教程:How to Rust-变量

    2024-03-13 23:16:03       45 阅读
  6. 【计算机网络】————集线器

    2024-03-13 23:16:03       40 阅读
  7. Rust常用特型之Drop特型

    2024-03-13 23:16:03       43 阅读
  8. MATLAB中mapminmax函数用法

    2024-03-13 23:16:03       46 阅读
  9. coingecko获取token price --php版

    2024-03-13 23:16:03       46 阅读
  10. GRU-深度学习循环神经网络情感分类模型搭建

    2024-03-13 23:16:03       52 阅读
  11. APK漏洞扫描工具

    2024-03-13 23:16:03       49 阅读
  12. 流量池增长(6)

    2024-03-13 23:16:03       40 阅读