二叉树leetcode(求二叉树深度问题)

news2024/11/20 14:17:00

在这里插入图片描述
today我们来练习三道leetcode上的有关于二叉树的题目,都是一些基础的二叉树题目,那让我们一起来学习一下吧。
https://leetcode.cn/problems/maximum-depth-of-binary-tree/submissions/

在这里插入图片描述

看题目描述是让我们来求出二叉树的深度,我们以第一个父节点就是我们二叉树的第一层,然后依次往下数,我们要求的就是我们最大层数,我们可以考虑我们用递归的方式。

我们先把这个问题分成子问题,首先我们知道二叉树是由好多的子树组成,那我们的每一子树都是由一个左孩子和一个右孩子,如果两个孩子都是空就是叶子节点,那我们这道题的子问题就可以变成,如果这个父亲节点是有孩子的,证明就是有层数的,这个时候我们就可以加上一层,但是我们也知道,一般的二叉树并不是都有左右孩子节点的,这个时候我们就应该返回有孩子节点那边的数量加上1,这是对于叶子节点,如果是非叶子节点的时候我们得返回值大的那个孩子加上1就是当前有几层,依次递归就可以算出我们的节点个数了。我们先来看我们的代码,然后来看看递归展开图就能更好的理解了。

int maxDepth(struct TreeNode* root) {
    if(root == NULL)
    {
        return 0;
    }
    if(!root->left && !root->right)
    {
        return 1;
    }
    int leftdepth = maxDepth(root->left);
    int rightdepth = maxDepth(root->right);
    if(leftdepth > rightdepth)
    {
        return leftdepth+1;
    }
    else
    {
        return rightdepth+1;
    }
}

在这里插入图片描述

递归展开图

在这里插入图片描述

我们来看这个就是我们第一次往左边递归到叶子节点然后开始返回。这样子也就是意味着我们的左边也是递归完了,我们要开始递归右边。再来看看我们的递归展开图。

在这里插入图片描述
这样就可以算出我们的层数了,所以这题就解决了,下两题我放在下一篇文章。
在这里插入图片描述

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

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

相关文章

Drawer抽屉(antd-design组件库)简单用法

1.Drawer抽屉 屏幕边缘滑出的浮层面板。 2.何时使用 抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务,操作完成后,可以平滑地回到原任务。 需要一个附加的面板来控制父窗体内容,这个面板在需要时…

python取百分位数据、ENVI数据归一化

1、python取百分位数据 两种取值方法 1)取值会计算百分比数、会产生小数,该数可能不是数据里的 import numpy as npdata [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 计算百分位数 percentiles np.percentile(data, [5, 95]) min_percentile percentiles[0]…

[笔记] 使用 xshell 记录日志

平常会使用xshell登录远程系统,在一些场景下,由于远端节点不支持下载,因此无法下载日志,此时可以通过 xshell 自带的日志功能将远端节点的日志内容导出. 1. 登录远端节点后启动日志记录 2. 指定要保存的日志文件 3. 在终端中使用 cat /path/to/logfile 将文件内容全部打印到终…

Ubuntu 环境下 NFS 服务安装及配置使用

需求:公司内部有多台物理服务器,需要A服务器上的文件让B服务器访问,也就是两台服务器共享文件,当然也可以对A服务器上的文件做权限管理,让B服务器只读或者可读可写 1、NFS 介绍 NFS 是 Network FileSystem 的缩写&…

正则表达式【C#】

1作用: 1文本匹配(验证字符串) 2查找字符串 2符号: . ^ $ * - ? ( ) [ ] { } \ | [0-9] 匹配出数字 3语法格式: / 表示模式 / 修饰符 /[0-9]/g 表示模式:是指匹配条件,要写在2个斜…

使用 OpenTelemetry 和 Golang

入门 在本文中,我将展示你需要配置和处理统计信息所需的基本代码。在这个简短的教程中,我们将使用 Opentelemetry 来集成我们的 Golang 代码,并且为了可视化,我们将使用 Jeager。 在开始之前,让我简要介绍一下什么是 …

某60物联网安全之IoT漏洞利用实操2学习记录

物联网安全 文章目录 物联网安全IoT漏洞利用实操2(内存破坏漏洞)实验目的实验环境实验工具实验原理实验内容实验步骤ARM ROP构造与调试MIPS栈溢出漏洞逆向分析 IoT漏洞利用实操2(内存破坏漏洞) 实验目的 学会ARM栈溢出漏洞的原理…

如何使用 CSS columns 布局来实现自动分组布局?

最近在项目中碰到这样一个布局,有一个列表,先按照 4 2 的正常顺序排列,当超过 8 个后,会横向重新开始 4 2 的布局,有点像一个个独立的分组,然后水平排列,如下 图中序号是 dom 序列,所…

使用Java对yaml和properties互转,保证顺序、实测无BUG版本

使用Java对yaml和properties互转 一、 前言1.1 顺序错乱的原因1.2 遗漏子节点的原因 二、优化措施三、源码 一、 前言 浏览了一圈网上的版本,大多存在以下问题: 转换后顺序错乱遗漏子节点 基于此进行了优化,如果只是想直接转换&#xff0c…

IDEA2022 Git 回滚及回滚内容恢复

IDEA2022 Git 回滚 ①选择要回滚的地方,右键选择 ②选择要回滚的模式 ③开始回滚 ④soft模式回滚的内容会保留在暂存区 ⑤输入git push -f ,然后重新提交,即可同步远程 注意观察IDEA右下角分支的标记,蓝色代表远程内容未同步到本…

初识Java 18-5 泛型

目录 动态类型安全 异常 混型 C中的混型 替代方案 与接口混合 使用装饰器模式 与动态代理混合 本笔记参考自: 《On Java 中文版》 动态类型安全 在Java 5引入泛型前,老版本的Java程序中就已经存在了List等原生集合类型。这意味着,我们…

LeetCode(38)生命游戏【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 生命游戏 1.题目 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板,每一个格子都可以看成是…

Linux(fork+exec创建进程)

1.进程创建 内核设计与实现43页; 执行了3次ps -f ,ps -f的父进程的ID(PPID)都是一样的,即bash. 实际上Linux上这个bash就是不断的复制自身,然后把复制出来的用exec替换成想要执行的程序(比如ps); 运行ps,发现ps是bash的一个子进程;原因就是bash把自己复制一份,然后替换成ps;…

深度学习-模型调试经验总结

1、 这句话的意思是:期望张量的后端处理是在cpu上,但是实际是在cuda上。排查代码发现,数据还在cpu上,但是模型已经转到cuda上,所以可以通过把数据转到cuda上解决。 解决代码: tensor.to("cuda")…

vuepress-----7、发布在GitHub

# 7、发布在GitHub 在你的项目中,创建一个如下的 deploy.sh 文件(请自行判断去掉高亮行的注释): #!/usr/bin/env sh# 确保脚本抛出遇到的错误 set -e# 生成静态文件 npm run docs:build# 进入生成的文件夹 cd docs/.vuepress/dist# 如果是发…

attention中Q,K,V的理解

第一种 1.首先定义三个线性变换矩阵,query,key,value: class BertSelfAttention(nn.Module):self.query nn.Linear(config.hidden_size, self.all_head_size) # 输入768, 输出768self.key nn.Linear(config.hidde…

python实验3 石头剪刀布游戏

实验3:石头剪刀布游戏 一、实验目的二、知识要点图三、实验1. 石头剪刀布2. 实现大侠个人信息 一、实验目的 了解3类基本组合数据类型。理解列表概念并掌握Python中列表的使用。理解字典概念并掌握Python中字典的使用。运用jieba库进行中文分词并进行文本词频统计。…

COGVLM论文解读(COGVLM:VISUAL EXPERT FOR LARGE LANGUAGE MODELS)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、摘要二、引言三、模型方法1、模型思路2、融合公式 四、训练方法总结 前言 2023年5月18日清华&智谱AI发布并开源VisualGLM-6B以来,清华KEG&…

竞赛选题 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

BUUCTF [GXYCTF2019]BabyUpload 1详解(.htaccess配置文件特性)

题目环境:查看题目源码 SetHandler application/x-httpd-php 通过源码可以看出这道文件上传题目主要还是考察.htaccess配置文件的特性 倘若不先上传.htaccess配置文件,那么后台服务器就无法解析php代码 这个是需要注意的 .htaccess配置文件特性 概述来说…