LeetCode:543二叉树的直径

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    //全局变量,记录直径
    int maxDiameter = 0;

    public int diameterOfBinaryTree(TreeNode root) {
        getDepth(root);
        return maxDiameter;    
    }
    //返回当前以node为根的子树的最大深度
    private int getDepth(TreeNode node){
        if(node == null){
            return 0;
        }
        //左右子树的深度
        int leftDepth = getDepth(node.left);
        int rightDepth = getDepth(node.right);
        //记算最大直径
        maxDiameter = Math.max(maxDiameter,leftDepth + rightDepth);

        return Math.max(leftDepth , rightDepth) + 1;
    }
}

路径可能不经过root节点,也就是说可能只在一边,所以不能直接只去计算左子树深度+右子树深度。

所以对于每个节点都要计算出它的左子树+右子树的深度

相关推荐
汉克老师3 小时前
GESP2025年3月认证C++五级( 第一部分选择题(9-15))
c++·算法·高精度计算·二分算法·gesp5级·gesp五级
穿条秋裤到处跑3 小时前
每日一道leetcode(2026.04.28):获取单值网格的最小操作数
算法·leetcode·职场和发展
leoufung3 小时前
LeetCode 68. Text Justification 题解:贪心与实现细节
算法·leetcode·职场和发展
WL_Aurora4 小时前
【每日一题】前缀和
python·算法
汉克老师4 小时前
GESP2025年3月认证C++五级( 第二部分判断题(1-10))
c++·算法·分治算法·线性筛法·gesp5级·gesp五级
洛水水4 小时前
【力扣100题】17.K 个一组翻转链表
算法·leetcode·链表
洛水水5 小时前
【力扣100题】16.两两交换链表中的节点
算法·leetcode·链表
wuweijianlove5 小时前
算法教学中的抽象建模与动态可视化设计的技术7
算法
2zcode5 小时前
基于改进YOLO11算法的芯片微缺陷检测系统(UI界面+数据集+分析界面+处置建议+训练代码)
算法·芯片缺陷