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

[Leetcode 543][Easy]-二叉树的直径-递归

目录

一、题目描述

二、整体思路

三、代码


一、题目描述

原题地址

二、整体思路

        取一个结点的最大直径就是取一个结点的左子树最大深度+右子树最大深度之和,因此可以定义一个递归函数,作用是取一个结点的最大直径。这个函数中还实现了求左子树最大深度/右子树最大深度的功能。

        容易搞不明白的是边界条件。这里我定义一个结点的左子树和右子树都为空时,该节点深度=1。

        因此,一个结点的直径=左子树根节点深度和+子树根节点深度。就不用像官方题解那样又加一又减一了。

三、代码

/*** 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 maxr=0;public int diameterOfBinaryTree(TreeNode root) {if(root.left==null && root.right==null){return 0;}go(root);return maxr;}public int go(TreeNode root){if(root==null){return 0;}int l=go(root.left);int r=go(root.right);maxr=Math.max(l+r,maxr);return Math.max(l,r)+1;}
}

http://www.lryc.cn/news/441858.html

相关文章:

  • 高级大数据开发学习路线指南
  • SpringBoot设置mysql的ssl连接
  • 2024-1.2.12-Android-Studio配置
  • 前端vue左侧树的一整套功能实现(一):vue2+vite封装v-resize指令,实现左侧树拖拽宽度和折叠展开
  • 本地部署huggingface模型,建立自己的翻译应用
  • 基于python+django+vue的在线学习资源推送系统
  • .Net Gacutil工具(全局程序集缓存工具)使用教程
  • 安卓13修改设置设备型号和设备名称分析与更改-android13设置设备型号和设备名称更改
  • AI健身体能测试之基于paddlehub实现引体向上计数个数统计
  • Redis常见报错及解决方法总结
  • 【TabBar嵌套Navigation案例-JSON的简单使用 Objective-C语言】
  • 通过鼠标移动来调整两个盒子的宽度(响应式)
  • React Zustand状态管理库的使用
  • pyrosetta MoveMap介绍
  • 在线安全干货|如何更改IP地址?
  • 【C++】【网络】【Linux系统编程】单例模式,加锁封装TCP/IP协议套接字
  • Matplotlib在运维开发中的应用
  • centos下nvme over rdma 环境配置
  • 【C++】——多态详解
  • STM32上实现FFT算法精准测量正弦波信号的幅值、频率和相位差(标准库)
  • 计算机毕业设计 农场投入品运营管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 【笔记】2.1 半导体三极管(BJT,Bipolar Junction Transistor)
  • 企业中文档团队的三种组织形式
  • 古诗词四首鉴赏
  • 全国行政区划下载(高德、阿里、天地图)
  • Springboot提升-MapStruct组件使用
  • 如何借助ChatGPT提升论文质量:实战指南
  • NLP开端:Tokenizer-文本向量化
  • STM32 MCU学习资源
  • Python知识点:Python内存管理与优化