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;
    }
}
相关推荐
Code_Solitude1 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司1 小时前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
文丑颜不良啊2 小时前
LeetCode2821~2840题目解析
java·leetcode
YLCHUP3 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
思麟呀4 小时前
背包DP(01背包+完全背包)
c++·算法
笑容掩饰我的失落5 小时前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
Pniubi6 小时前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
꧁细听勿语情꧂7 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
文丑颜不良啊7 小时前
LeetCode2741~2760题目解析
java·leetcode
俊俊几年的7 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c