帮别人做网站赚钱吗/微信小程序怎么做

帮别人做网站赚钱吗,微信小程序怎么做,建设网站的内容,火车头提取wordpress抓包数据1.问题描述 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例1 输入:root [1,2,3,4,5] 输出&#…

1.问题描述

        给你一棵二叉树的根节点,返回该树的 直径 。

        二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

        两节点之间路径的 长度 由它们之间边数表示。

        示例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

        难度等级

                简单

        题目链接

                二叉树的直径

2.解题思路

        这道题目是要求二叉树的直径,这道题如果搞清楚了各个概念直接的关系,就会变得非常简单,我们一起来看一下。

        首先,我们要求的是二叉树的直径,根据题目给的定义,二叉树的直径是二叉树中任意两个节点之间最大路径的长度。所以我们的问题就是找到最大的路径长度,而路径长度=经过的节点数-1。所以,我们可以把问题转化为求经过最多的节点数。

        我们要求经过最多的节点数,怎么样才能经过尽可能多的节点数呢?那肯定要最深的节点一直到根节点再转向,转向到另外一棵子树的最深节点处。但是这里有一个问题,就是到根节点转向,不一定就是最多的节点数,可能另外一棵子树没有多少节点呢?反而可能是在某一个节点转向之后,节点数更多。所以,我们的解决办法就是求出以每一个节点为根节点,从左最深处到右最深处的节点数,然后取最大值。

        这里要明确一点,要从左最深处到右最深处,那我们就要分别求出左右两颗子树的深度。那这个问题就被转化为求最大深度的问题了。

        我们定义一个变量,用来更新最大节点数。

    //存储经过的最大节点数int result = 1;

        递归的结束条件是,如果节点为空,直接返回0就可以了。

        //空节点返回0if(node == null){return 0;}

        然后我们就可以对左右子树递归求深度,然后取左右子树的最大值+1(这里的+1指加上当前根节点本身)进行返回。

        //左子树的深度int L = dfs(node.left);//右子树的深度int R = dfs(node.right);.....return Math.max(L,R) + 1;

        到这里,我们已经完成了求最大深度的逻辑。但是我们还缺少了求最大节点数的逻辑。到这一步,已经不难了,因为我们前面已经递归求了左右子树的深度,我们只需要将左子树的深度加上右子树的深度,再加1,就是以当前节点为根,所可能经过的最大节点数了。这里的+1(是因为要从左最深到右最深,必须经过当前节点,所以要把当前节点也算上)。将以当前节点为根所经过的最大节点数与全局已经记录的最大节点数进行比较,取最大值即可。

        //更新经过的最大节点数result = Math.max(result,L + R + 1);

        当我们求完整个树的深度时,我们的最大节点数也就跟着求出来了。此时,只需要按照定义,将经过的最大节点数-1返回即可。

        dfs(root);//直径=经过的最大节点数-1return result - 1;

3.代码展示

/*** 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 result = 1;public int diameterOfBinaryTree(TreeNode root) {dfs(root);//直径=经过的最大节点数-1return result - 1;}public int dfs(TreeNode node){//空节点返回0if(node == null){return 0;}//左子树的深度int L = dfs(node.left);//右子树的深度int R = dfs(node.right);//更新经过的最大节点数result = Math.max(result,L + R + 1);return Math.max(L,R) + 1;}
}

4.总结

        这道题,只需要理清几个概念直接的关系,就可以将问题简化成我们曾经做过的求深度问题,这样问题也就轻松解决了。今天这道题就啰嗦到这,祝大家刷题愉快~

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

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

相关文章

C语言每日一练——day_4

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第四天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

工作流编排利器:Prefect 全流程解析

工作流编排利器&#xff1a;Prefect 全流程解析 本文系统讲解了Prefect工作流编排工具&#xff0c;从基础入门到高级应用&#xff0c;涵盖任务与流程管理、数据处理、执行器配置、监控调试、性能优化及与其他工具集成等内容&#xff0c;文末项目实战示例&#xff0c;帮助读者全…

LINUX系统安装+添加共享目录

一、前言 Windows或mac系统中创建Linux工作环境是基于VMware和SL(Scientific Linux)&#xff0c;下面分别安装二者。 二、VMware软件安装及注册 1、双击VMware安装包 2、点击下一步 3、 勾选接受许可&#xff0c;并点击下一步 4、更改路径&#xff08;建议更改为容易找到的路…

BI 工具响应慢?可能是 OLAP 层拖了后腿

在数据驱动决策的时代&#xff0c;BI 已成为企业洞察业务、辅助决策的必备工具。然而&#xff0c;随着数据量激增和分析需求复杂化&#xff0c;BI 系统“卡”、“响应慢”的问题日益突出&#xff0c;严重影响分析效率和用户体验。 本文将深入 BI 性能问题的根源&#xff0c;并…

基于SSM+Vue的汽车维修保养预约系统+LW示例

1.项目介绍 系统角色&#xff1a;管理员、员工、用户功能模块&#xff1a;用户管理、员工管理、汽车类型管理、项目类型管理、维修/预约订单管理、系统管理、公告管理等技术选型&#xff1a;SSM&#xff0c;vue&#xff08;后端管理web&#xff09;&#xff0c;Layui&#xff…

在rocklinux里面批量部署安装rocklinx9

部署三台Rockylinux9服务器 实验要求 1. 自动安装ubuntu server20以上版本 2. 自动部署三台Rockylinux9服务器&#xff0c;最小化安装&#xff0c;安装基础包&#xff0c;并设定国内源&#xff0c;设静态IP 实验步骤 安装软件 # yum源必须有epel源 # dnf install -y epel-re…

Oxidized收集H3C交换机网络配置报错,not matching configured prompt (?-mix:^(<CD>)$)

背景&#xff1a;问题如上标题&#xff0c;H3C所有交换机配置的model都是comware 解决方案&#xff1a; 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…

mac本地安装运行Redis-单机

记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了&#xff0c;只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址&#xff1a;https://git…

C++学习之格斗小游戏综合案例

C格斗游戏效果视频 1.案例简介 #include "broadSword.h" //构造函数 BroadSword::BroadSword() { FileManager fm; map<string, map<string, string>> mWeapon; fm.loadCSVData("Weapons.csv", mWeapon); //武器id string id …

《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》

导语​ "你是否想过用Python开发一款可玩性高的双人合作游戏&#xff1f;本文将分享如何从零开始实现一款类《吸血鬼幸存者》的生存射击游戏&#xff01;包含完整源码解析、角色系统设计、敌人AI逻辑等核心技术点&#xff0c;文末提供完整代码包下载&#xff01;" 哈…

Linux基础开发工具—vim

目录 1、vim的概念 2、vim的常见模式 2.1 演示切换vim模式 3、vim命令模式常用操作 3.1 移动光标 3.2 删除文字 3.3 复制 3.4 替换 4、vim底行模式常用命令 4.1 查找字符 5、vim的配置文件 1、vim的概念 Vim全称是Vi IMproved&#xff0c;即说明它是Vi编辑器的增强…

Skyvern AI 实现 浏览器爬虫+自动化工具

一、前言 本文Skyvern是一款功能强大的模拟浏览器自动化操作爬虫软件。它通过模拟人类在浏览器中的操作&#xff0c;实现对目标网站的自动化访问、数据抓取和处理。Skyvern支持多种编程语言&#xff0c;用户可根据需求编写脚本&#xff0c;实现高效的数据采集。同时&#xff0c…

【Academy】OAuth 2.0 身份验证漏洞 ------ OAuth 2.0 authentication vulnerabilities

OAuth 2.0 身份验证漏洞 ------ OAuth 2.0 authentication vulnerabilities 1. 什么是 OAuth&#xff1f;2. OAuth 2.0 是如何工作的&#xff1f;3. OAuth 授权类型3.1 OAuth 范围3.2 授权代码授权类型3.3 隐式授权类型 4. OAuth 身份验证4.1 识别 OAuth 身份验证4.2 侦察OAuth…

C语言(23)

字符串函数 11.strstr函数 1.1函数介绍&#xff1a; 头文件&#xff1a;string.h char *strstr ( const char * str1,const char *str2); 作用&#xff1a;在一个字符串&#xff08;str1&#xff09;中寻找另外一个字符串&#xff08;str2&#xff09;是否出现过 如果找到…

Vue3实战学习(Vue3的基础语法学习与使用(超详细))(3)

目录 &#xff08;1&#xff09;Vue3工程环境准备、项目基础脚手架搭建详细教程。(博客链接) &#xff08;2&#xff09;Vue3的基础语法学习与使用。 &#xff08;1&#xff09;"{{}}"绑定数据。 <1>ref()函数定义变量——绑定数据。 <2>reactive({...})…

vtkDepthSortPolyData 根据相机视图方向对多边形数据进行排序

1. 作用 在 3D 渲染中&#xff0c;透明对象的渲染顺序非常重要。如果透明对象的渲染顺序不正确&#xff0c;可能会导致错误的视觉效果&#xff08;例如&#xff0c;远处的透明对象遮挡了近处的透明对象&#xff09;。vtkDepthSortPolyData 通过对多边形数据进行深度排序&#…

【2025力扣打卡系列】0-1背包 完全背包

坚持按题型打卡&刷&梳理力扣算法题系列&#xff0c;语言为python3&#xff0c;Day5 0-1背包【目标和】 有n个物品&#xff0c;第i个物品的体积为w[i], 价值为v[i]。每个物品至多选一个&#xff0c;求体积和不超过capacity时的最大价值和常见变形 至多装capacity&#x…

《人月神话》:软件工程的成本寓言与生存法则

1975年&#xff0c;Fred Brooks在《人月神话》中写下那句振聋发聩的断言——“向进度落后的项目增加人力&#xff0c;只会让进度更加落后”——时&#xff0c;他或许未曾料到&#xff0c;这一观点会在半个世纪后的人工智能与云原生时代&#xff0c;依然如达摩克利斯之剑般悬在每…

三维建模与视频融合(3D-Video Integration)技术初探。

三维建模与视频融合&#xff08;3D-Video Integration&#xff09;是一种将虚拟三维模型无缝嵌入实拍视频场景的技术&#xff0c;广泛应用于影视特效、增强现实&#xff08;AR&#xff09;、游戏开发、广告制作 、视频监控 等领域。 一、技术核心流程 三维建模与动画 使用工具…

SpringMVC-全局异常处理

文章目录 1. 全局异常处理2. 项目异常处理方案2.1 异常分类2.2 异常解决方案2.3 异常解决方案具体实现 1. 全局异常处理 问题&#xff1a;当我们在SpingMVC代码中没有对异常进行处理时&#xff0c;三层架构的默认处理异常方案是将异常抛给上级调用者。也就是说Mapper层报错会将…