二叉树的最小深度(rust实现)

news2024/11/27 12:38:41

二叉树的最小深度

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。
在这里插入图片描述

思路

这道题本质上是考察:

  1. 如何遍历二叉树
  2. 理解什么是深度

对于这两点的考察,其实最底层的思路还是要对数据结构有灵活的应用;很明显,最小的二叉树深度就是广度遍历二叉树的时候,找到深度最小的叶子结点。我们只需要一层一层的遍历,只要找到叶子节点,返回它的深度就行了。

use std::cell::RefCell;
use std::ops::Not;
use std::rc::Rc;
use crate::solution::Solution;
use crate::tree_node::TreeNode;

impl Solution {
    //  给定一个二叉树,找到其最小深度
    pub fn min_depth(root: Option<Rc<RefCell<TreeNode>>>) -> i32 {
        if root.is_none() {
            return 0;
        }
        let mut queue = Vec::new();
        queue.push(root.unwrap());
        let mut result = 1;
        while !queue.is_empty() {
            let queue_len = queue.len();
            for _ in 0..queue_len {
                let node = queue.remove(0);
                if node.borrow().left.is_none() && node.borrow().right.is_none() {
                    return result;
                }
                if node.borrow().left.is_some(){
                    queue.push(node.borrow_mut().left.take().unwrap());
                }
                if node.borrow().right.is_some(){
                    queue.push(node.borrow_mut().right.take().unwrap());
                }
            }
            result += 1;
        }
        return result;
    }
}

该处使用了非递归的广度优先遍历。稍微使用了一个比较巧妙的方法,每次都把某层的节点推入到队列中,并且记录该层有多少个节点,然后根据记录的个数,取出该层的节点去判断。

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

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

相关文章

再添殊荣!移远通信获评中国移动2023 年行业智能硬件库集团级金牌合作伙伴

10月12日下午&#xff0c; 2023中国移动全球合作伙伴大会政企论坛顺利举办。作为中国移动重要的合作伙伴&#xff0c;移远通信受邀参会&#xff0c;并凭借与中国移动在物联网领域长期、深入的合作&#xff0c;获评中国移动2023 年行业智能硬件库集团级金牌合作伙伴。移远通信副…

windows查看每个程序建立的TCP链接数量

首先以管理管权限打开powershell Set-ExecutionPolicy RemoteSigned然后运行脚本 脚本在文档最上方 就可以看到

windows系统使用软件异地同步数据(灾备)

Syncthing是一个开源文件同步工具&#xff0c;可以在多台设备之间实时同步文件或文件夹&#xff0c;官方网站&#xff1a;Syncthing 下载地址&#xff1a;Syncthing | Downloads &#xff0c;一般推荐下载图形界面SyncTrayzor。 官方下载地址&#xff1a; https://github.c…

找到合适的软件外包开发团队

寻找适合的软件外包开发团队需要经过一系列步骤和考虑因素。以下是一些寻找外包开发团队的关键步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 明确需求和目标&#xff1a; 在寻找外包团队之前&a…

判断非线性负载是否合格的方法可以从以下几个方面进行考虑:

额定功率容量&#xff1a;需要了解负载设备的额定功率容量&#xff0c;根据负载设备的规格和说明书&#xff0c;确定其额定功率容量是否能够满足实际需求&#xff0c;如果超过了负载设备的额定功率容量&#xff0c;可能会导致设备过载&#xff0c;从而影响其正常运行。 电压波形…

win10录音机入门指南,让你的录音更轻松

“win10怎么录音呀&#xff1f;朋友说win10有自带的录音机&#xff0c;但是我在电脑上找了很久都没找到&#xff0c;大家知道win录音机怎么打开吗&#xff1f;教教我吧。” 在数字化时代&#xff0c;录音机已经成为人们日常生活和工作中不可或缺的一部分。无论是记录会议、讲座…

万界星空科技/生产制造执行MES系统/开源MES/免费MES

开源系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、免费MES、免费智能制造系统、免费排产系统、免费排班系统、免费质检系统、免费生产计划系统、免费数字化大屏。 万界星空开源MES制造执行系统的Java开源版本。开源mes…

pip更新报错 Command “python setup.py egg_info“ failed with error code 1

已解决&#xff0c;解决方法直接跳转到文章末尾 这个问题遇到过好几次了&#xff0c;尝试多种办法但都没解决&#xff0c;之前一次是在部署openstack时遇到&#xff0c;当时也是没解决。 使用linux自带到python2.7&#xff0c;pip版本只有6.x&#xff0c;需要升级pip&#xf…

【五天教学】遥感数据与作物模型同化实践技术应用

基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…

Matlab进阶绘图第31期—桑基图(Sankey Chart)

桑基图&#xff08;Sankey Chart&#xff09;本质为一种流程图&#xff0c;可以很好地展示数据的层次结构以及流量变化。 桑基图主要由节点块与流动路径线组成。 其中&#xff0c;节点块用于表示类别&#xff1b;流动路径线除了可以直观地表示流动的方向&#xff0c;其宽度还…

arcgis server打印影像问题

切片服务不勾这个就可以正常打印&#xff0c;勾了就是打印动态的

信钰证券:今日投资前瞻:飞行汽车行业迎来新突破 银行板块配置渐进

上星期五&#xff0c;两市股指低开低走&#xff0c;深成指、创业板指、上证50指数盘中均跌超1%。到收盘&#xff0c;沪指跌0.64%报3088.1点&#xff0c;深成指跌0.99%报10068.28点&#xff0c;创业板指跌1.11%报1996.6点&#xff0c;两市算计成交8084亿元&#xff0c;北向资金大…

BIDS数据存储格式介绍与dcm2bids安装与使用

介绍dcmtk和dcm2bids BIDS&#xff08;Brain Imaging Data Structure&#xff09;是一种用于规范化神经影像数据的标准&#xff0c;它定义了数据的目录结构、文件命名规则和元数据格式。BIDS使得数据的共享和分析更加容易&#xff0c;同时很多主流的图像处理自动化软件也需要B…

【剑指Offer】28.对称的二叉树

题目 给定一棵二叉树&#xff0c;判断其是否是自身的镜像&#xff08;即&#xff1a;是否对称&#xff09; 例如&#xff1a;下面这棵二叉树是对称的 下面这棵二叉树不对称。 数据范围&#xff1a;节点数满足 0≤n≤1000&#xff0c;节点上的值满足 0∣val∣≤1000 要求&am…

Garden Plannerfor Mac /win:轻松创建您的理想园林绿化设计

如果你希望拥有一个美丽、舒适的绿色环境&#xff0c;但又不确定如何设计和管理&#xff0c;那么Garden Planner园林绿化设计软件是你的理想选择。 Garden Planner是一款专门为园艺爱好者和专业人士设计的软件。它可以帮助你规划、设计和维护你的园林绿化。无论是小型的家庭花…

树叶识别系统python+Django网页界面+TensorFlow+算法模型+数据集+图像识别分类

一、介绍 树叶识别系统。使用Python作为主要编程语言开发&#xff0c;通过收集常见的6中树叶&#xff08;‘广玉兰’, ‘杜鹃’, ‘梧桐’, ‘樟叶’, ‘芭蕉’, ‘银杏’&#xff09;图片作为数据集&#xff0c;然后使用TensorFlow搭建ResNet50算法网络模型&#xff0c;通过对…

vue @click点击事件不生效

问题&#xff1a; 上图的两个添加绑定了同一个函数 明明写法完全一样&#xff0c;但是点击左上角的按钮死活没反应&#xff08;抓狂 原因&#xff1a; 用浏览器的调试模式 点击之后发现这个button被下面的a-spin标签挡住了&#xff08;使用的antdv组件 咱也不知道为什么会这样…

“Invalid project description“问题解决

eclipse导包“Invalid project description“问题解决 问题&#xff1a; 导入某些android项目到eclipse的时候&#xff0c;可能会出现错误&#xff1a;Invalid project description。 解决方案&#xff1a; 由于导入的项目已经在workspace的工作目录中&#xff0c; 将项目整个…

MySQL多表查询综合练习

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下&#xff1a; CREATE TABLE sc…

小工具使用——瑞士军刀(nc.exe)实现远程控制终端操作

工具&#xff1a;一台服务器&#xff0c;一台本地计算机&#xff0c;nc.exe(链接&#xff1a;https://pan.baidu.com/s/1TCzjgE2GfE3qCzrIiOLYJQ?pwd5tmk 提取码&#xff1a;5tmk)