【Hot100】LeetCode—543. 二叉树的直径

news2024/11/27 4:40:55

目录

  • 1- 思路
    • 深搜——dfs
  • 2- 实现
    • ⭐543. 二叉树的直径——题解思路
  • 3- ACM 实现


  • 原题连接:543. 二叉树的直径

1- 思路

深搜——dfs

递归三部曲

  • 1- 递归参数和返回值
    • 返回 public int depth(TreeNode root)
  • 2- 终止条件
    • 如果遇到 null,则返回 0
  • 3- 递归表达式
    • return Math.max(left,right)+1

image.png


2- 实现

⭐543. 二叉树的直径——题解思路

在这里插入图片描述

class Solution {
    int res = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        depth(root);
        return res;
    }

    public int depth(TreeNode root){
        if(root==null){
            return 0;
        }
        int left = depth(root.left);
        int right = depth(root.right);
        res = Math.max(res,left+right);
        return Math.max(left,right)+1;
    }
}

3- ACM 实现

public class diameterOfBinaryTree {

    public static 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;
        }
    }

    public static TreeNode build(String str){
        if(str == null || str.length()==0){
            return null;
        }
        String input = str.replace("[","");
        input = input.replace("]","");
        String[] parts = input.split(",");

        Integer[] nums = new Integer[parts.length];
        for(int i = 0 ; i < parts.length;i++){
            if(!parts[i].equals("null")){
                nums[i] = Integer.parseInt(parts[i]);
            }else{
                nums[i] = null;
            }
        }
        Queue<TreeNode> queue = new LinkedList<>();
        TreeNode root = new TreeNode(nums[0]);
        queue.offer(root);
        int index = 1;
        while(!queue.isEmpty()&& index<parts.length){
            TreeNode node = queue.poll();
            if(index<nums.length && nums[index]!=null){
                node.left = new TreeNode(nums[index]);
                queue.offer(node.left);
            }
            index++;
            if(index<nums.length && nums[index]!=null){
                node.right = new TreeNode(nums[index]);
                queue.offer(node.right);
            }
            index++;
        }
        return root;
    }

    static int res = 0;
    public static int diameterOfBinaryTree(TreeNode root) {
        depth(root);
        return res;
    }

    public static int depth(TreeNode root){
        if(root==null){
            return 0;
        }
        int left = depth(root.left);
        int right = depth(root.right);
        res = Math.max(res,left+right);
        return Math.max(left,right)+1;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        TreeNode root = build(input);
        System.out.println("结果是"+diameterOfBinaryTree(root));

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024Go语言面试宝典Golang零基础实战项目面试八股力扣算法笔记等

2024最新Golang面试八股文&#xff0c;以及各种零基础全套实战项目&#xff0c;经典力扣算法题以及常见的面试题型&#xff0c;大厂面试题。go语言面试必备。包括GO基础类、GO并发编程、GO RUNTIME、微服务、容器技术、Redis、MySQL、Linux、缓存、网络和操作系统、消息队列、分…

USB3.2 摘录(六)

系列文章目录 USB3.2 摘录&#xff08;一&#xff09; USB3.2 摘录&#xff08;二&#xff09; USB3.2 摘录&#xff08;三&#xff09; USB3.2 摘录&#xff08;四&#xff09; USB3.2 摘录&#xff08;五&#xff09; USB3.2 摘录&#xff08;六&#xff09; 文章目录 系列文…

如何在VMwareWorkstation上安装的ESXi系统扩容存储

在做ESXi的相关实验的时候&#xff0c;需要扩容ESXi的存储&#xff0c;那么如何进行操作呢&#xff1f; 扩容VMwareWorkstation上虚拟机的存储 首先我们需要先扩容虚拟机上的存储&#xff08;可不关闭虚拟机&#xff09;按照图下所示&#xff0c;右键虚拟机&#xff0c;点击设…

PCL-基于RANSAC的平面拟合方法

基于RANSAC的平面拟合方法 一、简介二、实验代码三、实验结果 一、简介 随机采样一致性&#xff08;Random sample consensus&#xff0c;RANSAC&#xff09;&#xff1a;RANSAC是一种鲁棒的模型拟合方法&#xff0c;它可以处理存在大量噪声和异常值的数据。在进行平面拟合时&…

Qt QTableWidgetItem.setFlags()

查看 Qt 官方地址 Qt Namespace | Qt Core 5.15.14 得到如下说明 默认值是 63&#xff0c;即如下表达式的值&#xff08;位运算&#xff09;&#xff0c;表示可选择&#xff08;1&#xff09;、可编辑&#xff08;2&#xff09;、可拖拽&#xff08;4&#xff09;、可放入&…

Springboot查看版本和兼容的依賴

https://docs.spring.io/spring-boot/docs/2.7.18/reference/htmlsingle/#appendix-dependency-versions 如果需要查自己的版本&#xff0c;只需要修改2.7.18&#xff0c;因爲我的是2.7.18的版本。 然後如果你想查詢所兼容的其它依賴版本&#xff0c;可以打開頁面后直接search…

RK3588——网口实时传输视频

由于通过流媒体服务器传输画面延迟太高的问题&#xff0c;不知道是没有调试到合适的参数还是其他什么问题。诞生了这篇博客。 RK3588板端上接摄像头&#xff0c;采集画面&#xff0c;通过网口实时传输给上位机并显示。 第一代版本 RK3588代码 import cv2 import socket imp…

AI智能体:我用扣子给詹杜库做了一套超酷炫的手办

杀疯了&#xff01; 在巴黎奥运会今日的男篮决赛中&#xff0c;库里开启了杀神模式。 末节关键时刻投中 4 记三分&#xff0c;直接带走比赛&#xff0c;看得我都跪了。 库里在 2012 年未能入选梦之队&#xff0c;2016 年 NBA 季后赛夺冠后太过疲惫&#xff0c;2021 年东京奥…

真实护网,看这一篇就够了!【护网行动】

如果一个白帽黑客没参过护网&#xff0c;那他可能要回炉重造了。那么网安领域最出名的护网是什么&#xff1f;12年攻防老手告诉你答案。 1.什么是护网&#xff1f; 护网行动是由机关单位主办的网络攻防比赛&#xff0c;一般是每年的6~9月份会举行&#xff0c;分为国家级、省级…

如何给两台机器集群设置VIP(虚拟IP)

原文链接&#xff1a;https://www.cnblogs.com/qianz/articles/16825567.html 一、环境准备 1.集群 IP部署 172.16.30.181是主节点&#xff0c;172.16.30.182是备节点&#xff0c;VIP是172.16.30.183 我是在openstack上搭建的集群&#xff0c;建议大家将需要用到的IP都固定到…

java多线程(五)线程间通信

线程间通信是并发编程中的一个重要概念&#xff0c;它允许多个线程之间交换信息或共享数据。 以下是几种常见的线程间通信方式及其示例&#xff1a; 1. 共享内存 共享内存是最基本的线程间通信方式。多个线程可以访问同一块内存区域&#xff0c;通过读写这块内存区域来实现数…

【问题解决】 PyAutoGUI was unable to import pyscreeze.

解决方案&#xff1a; 打开终端&#xff08;winr 输入cmd回车&#xff09;执行 pip install pyscreeze 再执行&#xff1a;pip install pillow

详解并掌握AXI4总线协议(四)、AXI4_FULL_SLAVE接口源码分析以及仿真验证

系列文章目录 详解并掌握AXI4总线协议&#xff08;一&#xff09;、AXI4-FULL接口介绍 详解并掌握AXI4总线协议&#xff08;二&#xff09;、AXI4_FULL_MASTER接口源码分析以及仿真验证 详解并掌握AXI4总线协议&#xff08;三&#xff09;、基于AXI4_FULL接口的BRAM读写仿真验…

免费好用!阿里这5款AI神器,太强了,打工人必备!(建议收藏)

大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 《黑神话&#xff1a;悟空》太爆了&#xff01;最近感觉都要被…

Eclipse部署一个项目到Tomcat和部署多个项目到Tomcat

Eclipse部署一个项目到Tomcat&#xff1a; https://blog.csdn.net/weixin_42334396/article/details/105902994 Eclipse部署多个项目到Tomcat&#xff1a; https://blog.csdn.net/zhanglin1220/article/details/82056185 使用cmd方法强制关闭端口&#xff0c;解除端口占用方法&…

2.初识springcloud

文章目录 1.什么是SpringCloud1.1版本的介绍 2.Spring Cloud实现方案3.环境搭建4.服务拆分原则5.数据准备5.1订单服务5.2商品服务 大家好&#xff0c;我是晓星航。今天为大家带来的是 初识springcloud 相关的讲解&#xff01;&#x1f600; 1.什么是SpringCloud 简单来说&…

Excel表格添加趋势线_数据拟合

一个曲线通过补偿算法拟合为另一个曲线&#xff0c;通常可以通过多种数学和计算技术实现。这里也可以通过Excel表格添加趋势线&#xff0c;然后对趋势线进行拟合&#xff0c;得到趋势预测公式来达到数据补偿。 通过把你需要的数据导入到Excel表格中。 通过 “ 插入 ” --> “…

从单一到互联:KNX网关如何改变你的家居生活

从单一到互联&#xff1a;KNX网关如何改变你的家居生活 在科技日新月异的今天&#xff0c;家居生活正经历着一场前所未有的变革。从过去单一、孤立的设备操作&#xff0c;到如今智能、互联的生态系统&#xff0c;KNX网关作为这一转变的关键角色&#xff0c;正悄然改变着我们的日…

探索Unity3D URP后处理在UI控件Image上的应用

探索Unity3D URP后处理在UI控件Image上的应用 前言初识URP配置后处理效果将后处理应用于UI控件方法一&#xff1a;自定义Shader方法二&#xff1a;RenderTexture的使用 实践操作步骤一&#xff1a;创建RenderTexture步骤二&#xff1a;UI渲染至RenderTexture步骤三&#xff1a;…

养宠家庭一定要试 希喂、美的两大品牌宠物空气净化器性能对比

随着养宠家庭的增多&#xff0c;宠物市场上产品也在不断丰富。这段时间最热门的产品非宠物空气净化器莫属&#xff0c;讨论度非常高&#xff0c;大家对它的评价褒贬不一。作为三只毛孩子的家长&#xff0c;它们的毛发清理问题一直令我头大&#xff0c;所以决定试试号称专为吸附…