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;
    }
}
相关推荐
剑胆凌锋3 小时前
等级保护测评工程师的困境
网络·安全·web安全·网络安全·职场和发展
朝朝辞暮i4 小时前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法
青梅橘子皮4 小时前
Blue---二分算法(二分查找与二分答案)
算法
长河4 小时前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
月光船幽幽4 小时前
加性偏移外推提升参数识别可靠性
python·算法
是翎5 小时前
AI开发工程师面试指南
人工智能·面试·职场和发展
Ivanqhz5 小时前
层归一化、残差、前馈网络与激活函数简述
服务器·数据库·人工智能·深度学习·算法
不会就选b6 小时前
算法日常・每日刷题--<动态规划>3
数据结构·算法
Interview Aid1126 小时前
Amazon SDE Interview Process:OA、VO 与面试流程详解
面试·职场和发展
-dzk-7 小时前
【堆】LC 347.前 K 个高频元素
算法·堆