当前位置: 首页 > news >正文

leetcode hot100【LeetCode 543. 二叉树的直径】java实现

LeetCode 543. 二叉树的直径

题目描述

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

示例 1:

输入:root = [1,2,3,4,5]
输出:3
解释:3,它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

示例 2:

输入:root = [1,2]
输出:1

提示:

  • 树中节点数目在范围 [1, 104]
  • -100 <= Node.val <= 100

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 {private int diameter = 0;public int diameterOfBinaryTree(TreeNode root) {depth(root);return diameter;}private int depth(TreeNode node) {if (node == null) {return 0;}int leftDepth = depth(node.left);int rightDepth = depth(node.right);diameter = Math.max(diameter, leftDepth + rightDepth);return Math.max(leftDepth, rightDepth) + 1;}
}

解题思路

  • 递归方法
    • 如果当前节点为空,返回高度为 0。
    • 计算当前节点的左右子树的高度。
    • 更新直径的最大值,即当前节点的左右子树高度之和。
    • 返回当前节点的高度,即其左右子树中较高的一个高度加 1。

这种方法的时间复杂度是 O(n),其中 n 是树中节点的数量,因为每个节点恰好被访问一次。空间复杂度是 O(h),其中 h 是树的高度,这取决于递归调用的栈空间,在最坏情况下(树完全不平衡,如链状结构),空间复杂度为 O(n)。

注:题目来源leetcode网站


http://www.mrgr.cn/news/61414.html

相关文章:

  • Java中的Push方法:实现与应用探讨
  • MySQL主从:如何处理“Got Fatal Error 1236”或 MY-013114 错误(percona译文)
  • 使用python生成gif图
  • Vue2+OpenLayers添加/删除点、点击事件功能实现(提供Gitee源码)
  • 【计算机网络】深入浅出计算机网络
  • 【MySQL学习笔记】MySQL视图View
  • 离散数学实验五c语言(并查集处理,Kruskal算法求最小生成树)
  • binlog 介绍
  • C# OpenCvSharp DNN UNet 推理
  • 2024年【通信安全员ABC证】最新解析及通信安全员ABC证新版试题
  • qt的c++环境配置和c++基础【正点原子】嵌入式Qt5 C++开发视频
  • 【AIGC】2024-arXiv-Lumiere:视频生成的时空扩散模型
  • 开始菜单增强工具 StartAllBack v3.7.10.4910 直装激活版
  • dubbo介绍
  • 13.音乐管理系统(基于SpringBoot + Vue)
  • YoloV9改进策略:Block改进|RFE模块,提高小物体的识别精度|即插即用|代码+修改过程
  • 抽取picomax的设备树
  • Leetcode 第 142 场双周赛题解
  • leetcode57:插入区间
  • 明日周刊-第25期
  • Docker方式部署ClickHouse
  • 大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 4)
  • 基于Mysql、JavaScript、PHP、ajax开发的MBTI性格测试网站(前端+后端)
  • Linux shell编程学习笔记87:blkid命令——获取块设备信息
  • 第7章 利用CSS和多媒体美化页面作业
  • Tree of Thoughts: Deliberate Problem Solving with Large Language Models