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

[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.kler.cn/a/317718.html

相关文章:

  • Flutter 小技巧之 OverlayPortal 实现自限性和可共享的页面图层
  • 通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
  • python怎么设置环境变量
  • 蓝队知识浅谈(上)
  • 解锁微前端的优秀库
  • C语言 | Leetcode C语言题解之第556题下一个更大元素III
  • ubuntu安装StarQuant
  • 【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL22
  • 【Linux】生产者消费者模型:基于阻塞队列,使用互斥锁和条件变量维护互斥与同步关系
  • 高级java每日一道面试题-2024年9月20日-分布式篇-什么是CAP理论?
  • 【Java】Java开发全攻略:从环境搭建到高效编程
  • vulnhub-prime1
  • Android 检测图片抓拍, 聚焦图片后自动完成拍照,未对准图片的提示请将摄像头对准要拍照的图片
  • 红书 API 接口:笔记详情数据接口的接入与使用
  • IDEA 关闭自动补全功能(最新版本)
  • 【我的 PWN 学习手札】House of Botcake —— tcache key 绕过
  • 我从家庭提取的动态IP是独享的吗?
  • RK3568笔记六十二:使用V4L2读取摄像头并在LCD上显示
  • TypeScript-面向对象(接口、类、对象、泛型)
  • 1.5 计算机网络的性能指标
  • Git可视化工具和基础命令
  • vue3<script setup>中使用reactive包裹的对象被重新赋值失去响应式原因和解决方式
  • C#控件开发能够阅读的书籍
  • ESP8266+DHT11+Python制作一个物联网温湿度传感器
  • 基于C#+SQL Server2005(WinForm)图书管理系统
  • 多边形抠图 python