LeetCode:543. 二叉树的直径

简介

题目链接:https://leetcode.cn/problems/diameter-of-binary-tree/description/

解决方式:二叉树 + 递归、DFS

递归

实现思路:

递归迭代每一个二叉树节点,计算经过该节点的直径,即左右子树长度和。维护一个全局最大直径,每个节点计算出的直径与全局最大直径对比,始终维护全局最大直径最大。这样就可以寻找出二叉树的最大直径了。

这其实也就相当于在计算二叉树的深度代码之上,添加一个计算节点的"直径",同时维护最大直径。

java 复制代码
class Solution {
    // 全局最大直径
    private int max = 0;

    public int diameterOfBinaryTree(TreeNode root) {
        // 递归
        depth(root);
        // 返回结果
        return max;
    }

    private int depth(TreeNode node){
        // 递归终止条件
        if(node == null) return 0;

        // 递归公式
        // 计算当前节点左右子树的深度
        int left = depth(node.left);
        int right = depth(node.right);
        // 计算直径并与全局最大直径对比
        max = Math.max(max, left + right);
        // 返回当前节点深度
        return Math.max(left, right) + 1;
    }
}
相关推荐
CS创新实验室5 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
海石7 小时前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode
海石7 小时前
1400分的dp汗流浃背之【交替子数组计数】
算法·leetcode
奋发向前wcx7 小时前
P2590 树的统计 题目解析
数据结构·算法·深度优先
imbackneverdie8 小时前
AI4S不止于分子药物:以MedPeer为代表的科研基建打开产业新增量
大数据·人工智能·算法·aigc·科研·学术·ai 4s
额鹅恶饿呃9 小时前
C语言中的数据结构和变量
c语言·数据结构·算法
运行时记录10 小时前
prompt-optimizer skill
算法
万法若空10 小时前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表
退休倒计时10 小时前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript
学逆向的11 小时前
汇编——内存
开发语言·汇编·算法·网络安全