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节点,也就是说可能只在一边,所以不能直接只去计算左子树深度+右子树深度。

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

相关推荐
郑州光合科技余经理31 分钟前
代驾系统架构拆解:订单链路、权限组织与私有化源码交付
开发语言·后端·算法·架构·系统架构·uni-app·php
To_OC3 小时前
LC 35 搜索插入位置:二分查找谁都会,边界条件谁写谁懵
javascript·算法·leetcode
天才测试猿3 小时前
2026软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
码哥DFS3 小时前
二叉树的直径
开发语言·javascript·算法
营养充电站6 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
人工智能·算法·docker·jupyter
技术小黑7 小时前
RNN算法实战系列05 | 天气预测
人工智能·rnn·算法
Ivanqhz9 小时前
php8 use-def链
算法·php
spter。9 小时前
AI 面试相同请求为什么会重复调用,如何解决
人工智能·面试·职场和发展
evans在进步10 小时前
LeetCode 189 轮转数组:三次反转原地解决,图解 Java 实现
java·算法·leetcode