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

二叉树(纲领篇)

文档阅读

文档阅读

二叉树解题的思维模式分两类:

1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。

2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。

无论使用哪种思维模式,你都需要思考:

如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。

题目

104. 二叉树的最大深度

https://leetcode.cn/problems/maximum-depth-of-binary-tree/

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

144. 二叉树的前序遍历

https://leetcode.cn/problems/binary-tree-preorder-traversal/

class Solution {List<Integer> list = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {dfs(root);return list;}public void dfs(TreeNode root){if(root == null) return;list.add(root.val);dfs(root.left);dfs(root.right);}
}

543. 二叉树的直径

https://leetcode.cn/problems/diameter-of-binary-tree/

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

相关文章:

二叉树(纲领篇)

文档阅读 文档阅读 二叉树解题的思维模式分两类&#xff1a; 1、是否可以通过遍历一遍二叉树得到答案&#xff1f;如果可以&#xff0c;用一个 traverse 函数配合外部变量来实现&#xff0c;这叫「遍历」的思维模式。 2、是否可以定义一个递归函数&#xff0c;通过子问题&a…...

day41—选择题

文章目录 1.某主机的IP 地址为 180.80.77.55&#xff0c;子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组&#xff0c;则目的地址可以是&#xff08;D&#xff09;2.ARP 协议的功能是&#xff08;A&#xff09;3.以太网的MAC 协议提供的是&#xff08;A&#xff0…...

Vue3 watch 监听对象数组中对象的特定属性

在 Vue 3 中&#xff0c;可以使用 watch 函数来监听对象数组中对象的特定属性。可以通过在回调函数中遍历数组来检查对象的特定属性是否发生变化&#xff0c;并在变化发生时执行相应的操作。 一、监听对象的特定属性 例如&#xff0c;假设有一个名为 items 的对象数组&#x…...

请求策略库alova小记

官方文档地址&#xff1a;https://alova.js.org/zh-CN/get-started/overview 定义 alova是一个简单编码即可实现特定场景的高效请求的请求策略工具。 场景痛点 现在一般的请求场景&#xff0c;一般分为两个部分&#xff1a; 请求部分。一般用axios等库触发http请求&#xf…...

[C++]string的使用

目录 string的使用&#xff1a;&#xff1a; 1.string类介绍 2.string常用接口说明 string相关习题训练&#xff1a;&#xff1a; 1.仅仅反转字母 2.找字符串中第一个只出现一次的字符 3.字符串里面最后一个单词的长度 4.验证一个字符串是否是回文 5.字符串相加 6.翻转字符串…...

Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机

1. Kali 操作系统简介 Kali Linux 是一个基于 Debian 的 Linux 发行版&#xff0c;旨在进行高级渗透测试和安全审计。Kali Linux 包含数百种工具&#xff0c;适用于各种信息安全任务&#xff0c;如渗透测试&#xff0c;安全研究&#xff0c;计算机取证和逆向工程。Kali Linux 由…...

R语言APSIM模型应用及批量模拟实践技术

查看原文>>>基于R语言APSIM模型高级应用及批量模拟实践技术 目录 专题一、APSIM模型应用与R语言数据清洗 专题二、APSIM气象文件准备与R语言融合应用 专题三、APSIM模型的物候发育和光合生产模块 专题四、APSIM物质分配与产量模拟 专题五、APSIM土壤水平衡模块 …...

破解马赛克有多「容易」?

刷短视频时&#xff0c;估计大家都看过下面这类视频&#xff0c;各家营销号争相曝光「一分钟解码苹果笔刷背后内容」的秘密。换汤不换药&#xff0c;自媒体们戏称其为「破解马赛克」&#xff0c;殊不知让多少不明真相的用户建立起了错误的认知&#xff0c;也让苹果笔刷第 10086…...

【.NET基础加强第八课--委托】

.NET基础加强第八课--委托 委托&#xff08;Delegate&#xff09;委托操作顺序实例多播委托—委托链实例实例委托传值 委托&#xff08;Delegate&#xff09; 委托&#xff08;Delegate&#xff09; 是存有对某个方法的引用的一种引用类型变量 委托操作顺序 1,定义一个委托类…...

jetcache:阿里这款多级缓存框架一定要掌握

0. 引言 之前我们讲解了本地缓存ehcache组件&#xff0c;在实际应用中&#xff0c;并不是单一的使用本地缓存或者redis&#xff0c;更多是组合使用来满足不同的业务场景&#xff0c;于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题&#xff0c;而这一点&#xff…...

干货 | 如何做一个简单的访谈研究?

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 心理学中研究中&#xff0c;大家常用的研究方法大多是实验法、问卷调查法等&#xff0c;这些均是定量研究。 其实&#xff0c;作为质性研究中常用的访谈法&#xff0c;可对个体的内心想法进…...

4年外包出来,5次面试全挂....

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;毕业于普通二本院校非计算机专业&#xff0c;18年跨专业入行测试&#xff0c;第一份工作在湖南某软件公司&#xff0c;做了接近4年的外包测试工程师&#xff0c;今年年初&#xff0c;感觉自己不能够再这样下去了&…...

基于遗传算法优化的核极限学习机(KELM)分类算法-附代码

基于遗传算法优化的核极限学习机(KELM)分类算法 文章目录 基于遗传算法优化的核极限学习机(KELM)分类算法1.KELM理论基础2.分类问题3.基于遗传算法优化的KELM4.测试结果5.Matlab代码 摘要&#xff1a;本文利用遗传算法对核极限学习机(KELM)进行优化&#xff0c;并用于分类 1.KE…...

评判需求优先级5大规则和方法(纯干货):

在划分用户需求时&#xff0c;需秉承需求任务紧跟核心业务指标&#xff0c;按照一定的规则和方法进行优先级的划分。 常见评判需求优先级规则有&#xff1a;四象限法则、KANO模型、二八原则、产品生命周期法、ROI评估法。 一、四象限法则 四象限法则是以【重要】和【紧急】程度…...

c++ 11标准模板(STL) std::vector (七)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…...

Contest3137 - 2022-2023-2 ACM集训队每月程序设计竞赛(1)五月月赛

A 1! 5! 46 169 有一种数字&#xff0c;我们称它为 纯真数。 它等于自身每一个数位的阶乘之和。请你求出不超过n的所有 纯真数。(注&#xff1a;纯真数不含有前导0&#xff09;数据范围1e18 纯真数只有四个&#xff0c;注意0!1 1,2,145,40585 int n;cin>>n;int res[]{…...

如何使用 YOLOv8 神经网络检测图像中的物体

对象检测是一项计算机视觉任务,涉及识别和定位图像或视频中的对象。它是许多应用的重要组成部分,例如自动驾驶汽车、机器人和视频监控。 多年来,已经开发了许多方法和算法来查找图像中的对象及其位置。执行这些任务的最佳质量来自使用卷积神经网络。 YOLO 是这项任务最流行的…...

Python每日一练:小艺读书醉酒的狱卒非降序数组(详解快排)

文章目录 前言一、小艺读书二、醉酒的狱卒三、非降序数组总结 前言 今天这个非降序数组&#xff0c;阅读解理小学水平&#xff0c;说起来都是泪啊。我折腾了一天都没搞定&#xff0c;从冒泡写到快速排序。换了几种都还不行&#xff0c;我又给快排加上插入排序。结果还是不能全…...

手麻系统源码,PHP手术麻醉临床信息系统源码,手术前管理模块功能

手麻系统源码&#xff0c;PHP手术麻醉临床信息系统源码&#xff0c;手术前管理模块功能 术前管理模块主要有手术排班、手术申请单、手术通知单、手术知情同意书、输血血液同意书、术前查房记录、术前访视、风险评估、手术计划等功能。 功能&#xff1a; 手术排班&#xff1a;…...

AUTOSAR - ComM - 学习一 :基础知识+配置

目录 1、概述 1.1、总览 1.2、功能描述 1.3、依赖关系 2、功能SPEC 2.1、PNC...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...