代码随想录算法训练营第十六天|LeetCode104 二叉树的最大深度、LeetCode111 二叉树的最小深度、LeetCode222完全二叉树的节点个数

题1:

指路:LeetCode104 二叉树的最大深度
思路与代码:
1.递归

求左右子树的最大深度后加1(根到子树也有1个深度单位)。代码如下:

class Solution {
public:int maxDepth(TreeNode* root) {int ans = 0;if (root == NULL) return 0;int leftdepth = maxDepth(root->left);int rightdepth = maxDepth(root->right);ans = max(leftdepth, rightdepth) + 1;return ans;}
};
2.迭代(层序遍历)

见二叉树的层序遍历。代码如下:

class Solution {
public:int maxDepth(TreeNode* root) {if (root == NULL) return 0;int depth = 0;queue<TreeNode*> que;  // 队列用来放节点que.push(root);while (!que.empty()) {int size = que.size();depth++;  // 向下一层深度加1while (size--) {TreeNode* node = que.front();que.pop();if (node->left) que.push(node->left);if (node->right) que.push(node->right);}}return depth;}
};

题2:

指路:LeetCode111 二叉树的最小深度
思路与代码:

最小深度应注意当左子树和右子树都为空时的限制条件。代码如下:

class Solution {
public:int minDepth(TreeNode* root) {queue<TreeNode*> que;if (root == NULL) return 0;que.push(root);int depth = 0;//vector<int> vec;while (!que.empty()) {int size = que.size();//   vec.push_back(size);depth++;while (size--) {TreeNode* node = que.front();que.pop();if (node->left) que.push(node->left);if (node->right) que.push(node->right);if (!node->left && !node->right) {return depth;}} }return depth;}
};

题3:

指路:LeetCode222 完全二叉树的节点个数
思路与代码:

差异不大,统计一下size就行。代码如下:

class Solution {
public:int countNodes(TreeNode* root) {queue<TreeNode*> que; if(root == NULL) return 0;que.push(root);int ans = 0;while (!que.empty()) {int size = que.size();ans += size;while (size--) {TreeNode* node = que.front();que.pop();//  ans++;if (node->left) que.push(node->left);if (node->right) que.push(node->right);}}return ans;}
};

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

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

相关文章

当他们在说业务的时候,到底在说什么

业务就是通过提供产品和服务给客户&#xff0c;以获取某种价值&#xff0c;形成业务闭环&#xff0c;并能自负盈亏。 文章会以生动形象的比喻来介绍业务到底是什么。 什么是业务&#xff1f; 业务&#xff0c;就像一场精彩的舞台剧&#xff0c;每个角色都有自己的任务和目标…

electron学习记录

1.下载electron electron/electron-quick-start: Clone to try a simple Electron app (github.com) 下载实例模板 2.安装依赖 npm源改成中国镜像 npm config set registry https://registry.npmmirror.com 然后用cnpm i 来安装 npm换官方源 npm config set registry https:…

QT--TCP网络通讯工具编写记录

QT–TCP网络通讯工具编写记录 文章目录 QT--TCP网络通讯工具编写记录前言演示如下&#xff1a;一、服务端项目文件&#xff1a;【1.1】server_tcp.h 服务端声明文件【1.2】thread_1.h 线程处理声明文件【1.3】main.cpp 执行源文件【1.4】server_tcp.cpp 服务端逻辑实现源文件【…

cuda 内核启动

C 使用 __global__ 声明说明符定义内核&#xff0c;并使用新的 <<<...>>> 执行配置语法指定内核调用的 CUDA 线程数&#xff08;请参阅 C 语言扩展&#xff09;。 每个执行内核的线程都有一个唯一的线程 ID&#xff0c;可以通过内置变量在内核中访问。 示例…

【最全的excel转json!!!】使用Python脚本提取excel文本中的数据到json中

比如说&#xff1a;我有一个1.xlsx的文件需要转成对应的json格式。 1&#xff09; excel 文件的大概内容&#xff1a; 2&#xff09;保存的方式类似于以下这种情况&#xff1a; 用Python脚本来实现 import pandas as pd import json# 读取Excel文件 excel_path r"D:…

基础知识篇:大语言模型核心原理解析

1️⃣人工智能基础概念全景图 &#x1f4a1; &#x1f9e0;人工智能与机器学习 人工智能&#xff08;AI&#xff09;是计算机科学的一个分支&#xff0c;旨在模拟人类的智能来解决问题。而机器学习&#xff08;ML&#xff09;是AI的一个子集&#xff0c;它的魅力在于不需要显…

【MySQL精通之路】MySQL8.0升级过程升级了什么

目录 1.升级内容 1.1 mysql系统库 1.2.其他库 2.步骤 2.1 步骤1&#xff1a;数据字典库升级。 2.2 步骤2&#xff1a;服务器升级。 3.mysql_upgrade 3.1 执行正常升级&#xff08;根据需要执行步骤1和2&#xff09;&#xff1a; 3.2 必要时仅执行步骤1&#xff1a; 3…

【MySQL精通之路】InnoDB(6)-磁盘结构(6)-Undolog

1.介绍 Undolog是与单个读写事务相关联的Undolog记录的集合。 Undolog包含有关如何撤消事务对聚集索引记录最新更改的信息。如果另一个事务需要将查看一致性读的一部分原始数据&#xff0c;则会从Undolog记录中检索未修改的数据。 2.结构 Undolog记录存在于Undolog段中 而Un…

LLMPerf-为LLM提供可重现的性能指标

LLMPerf-为LLM推理提供可复现的性能指标 翻译自文章&#xff1a;Reproducible Performance Metrics for LLM inference 结合之前的LLMPerf测试大模型API性能的文章进行查看&#xff0c;效果更佳。 1. 摘要 我们见过许多关于LLM性能的声明&#xff1b;然而&#xff0c;这些声明往…

Android面试题之Kotlin泛型和reified关键字

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 //泛型 class MagicBox<T>(item:T){var available falseprivate var subject:T itemfun fetch() : T? {return subject.takeIf { avai…

Ubuntu彻底卸载Nginx

停止Nginx服务 sudo systemctl stop nginx卸载Nginx软件包 sudo apt purge nginx nginx-common nginx-core清除配置文件和依赖项 清除Nginx的配置文件 sudo rm -rf /etc/nginx清除Nginx安装的依赖项 sudo apt autoremove清除相关文件和目录 删除Nginx的日志文件 sudo rm…

配置旁挂二层组网直接转发示例(命令行)

业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组网方式&#xff1a;旁挂二层组网。DHCP部署方式&#xff1a; AC作为DHCP服务器为AP分配IP地址。汇聚交换机SwitchB作…

深度学习基础之《TensorFlow框架(18)—卷积神经网络(2)》

一、卷积层 1、卷积层&#xff08;Convolutional Layer&#xff09;介绍 卷积神经网络中每层卷积层由若干卷积单元&#xff08;卷积核&#xff09;组成&#xff0c;每个卷积单元的参数都是通过反向传播算法最佳化得到的 卷积运算的目的是特征提取&#xff0c;第一层卷积层可能…

Gradle和Maven项目解决Spring Boot Configuration Annotation Processor not configured警告

问题描述 写了一个配置类,加了注解@ConfigurationProperties(prefix = “xxx”) 后一直报警告:Spring Boot Configuration Annotation Processor not configured 意思是 Spring boot 未配置注解处理器 解决过程 出现这个问题后,百度查了解决方式 1.maven项目 maven项目是…

学习前端第四十四天(浏览器事件简介)

一、事件处理程序 对事件作出响应&#xff0c;可以分配一个 处理程序 &#xff0c; 一个在事件发生时运行的函数 1、HTML特性绑定事件处理函数 <button id"btn1" οnclick"fn();console.log(xc)">保存1</button> 2、DOM属性绑定事件处理函数…

纯软件双机热备

在信息化高速发展的今天&#xff0c;企业对于业务连续性的需求愈发强烈。无论哪个行业&#xff0c;系统的稳定运行都至关重要。为了确保系统的高可用性和业务连续性&#xff0c;纯软件双机热备技术应运而生&#xff0c;成为了企业IT架构中的关键一环。 双机热备软件下载 …

04信号量

如果有两个或者两个以上的任务(进程 / 线程&#xff0c;并发的实体)&#xff0c;去访问一个共享资源(硬件上面的&#xff0c;软件上的)。我们必须要保证这个共享资源的有序访问&#xff0c;否则会产生不可预知的后果 例子: very_important_i 5; // 共享资源 fun(…

vue3父组件使用ref获取子组件的属性和方法

在vue3中父组件访问子组件中的属性和方法是需要借助于ref: 1.<script setup> 中定义响应式变量 例如&#xff1a; const demo1 ref(null) 2.在引入的子组件标签上绑定ref属性的值与定义的响应式变量同名( <demo1 ref"demo1"/>)。 父组件代码如下&…

cPanel中如何进行网站质量检测

最近我在维护网站的时候需要查看网站质量如何&#xff0c;我使用的是Hostease的主机安装的WordPress网站&#xff0c;随后在咨询了他们的技术支持后获得了方法。 当您在cPanel中部署了网站后&#xff0c;确保网站的质量和性能是至关重要的。cPanel提供了一个便捷的功能Site Qu…

Postman进阶功能-Mock服务与监控

大家好&#xff0c;前面跟大家分享一些关于 Postman 的进阶功能&#xff0c;当我们深入探索 Postman 的进阶功能时&#xff0c;Mock 服务与监控这两个重要方面便跃然眼前。 首先&#xff0c;Mock 服务为我们提供了一种灵活便捷的方式&#xff0c;让我们在某些实际接口尚未准备好…