二叉树最小深度(递归)

news/2024/10/17 18:04:57/

111. 二叉树的最小深度 - 力扣(LeetCode)

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

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

说明:叶子节点是指没有子节点的节点。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:2

示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

提示:

  • 树中节点数的范围在 [0, 105] 内
  • -1000 <= Node.val <= 1000

题目分析:

要求叶子节点到根节点的距离

难点在于如果根节点的左右节点中如果有一个为空,不能返回最小深度为1

则需要特殊处理左右节点中有唯一空节点的情况

思路:

使用后序遍历求的二叉树的最小高度,左右中(中用来处理数据)

代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int getHeight(TreeNode* node) {if (node == NULL) return 0;int leftHeight = getHeight(node->left); //左int rightHeight = getHeight(node->right); //右//中if (node->left == NULL && node->right != NULL) {return rightHeight+1;}else if (node->left != NULL && node->right == NULL) {return leftHeight+1;}else {return min(leftHeight,rightHeight) + 1;}}int minDepth(TreeNode* root) {int result = getHeight(root);return result;}
};

if (node->left == NULL && node->right != NULL) {
            return rightHeight+1;
        }else if (node->left != NULL && node->right == NULL) {
            return leftHeight+1;
        }else {
            return min(leftHeight,rightHeight) + 1;
        }

问:这段代码中,前面两种判断不会影响到非根节点的情况吗?

答:不会的,因为我们要取得就是叶子节点,就是非空的那个节点


http://www.ppmy.cn/news/1539768.html

相关文章

微信小程序 - 供应链系统设计

文章目录 一、系统概述二、系统架构设计三、系统安全设计四、系统性能优化五、系统部署与维护 在当今数字化时代&#xff0c;供应链管理对于企业的高效运营至关重要。微信小程序作为一种便捷的移动应用形式&#xff0c;为供应链系统的开发提供了新的机遇。本文将从系统架构设计…

Embedding实现GPT回答和知识库内容相关的内容

现在的gpt应用基本都实现了这个场景的应用&#xff0c;比如&#xff1a; 联网搜索&#xff0c;根据网上找到的内容来回答你的内容&#xff0c;像bing和kimi或者其他AI搜索引擎智能客服&#xff0c;把网站里的内容或者相关的其他什么资料预置到系统中&#xff0c;提高回答的质量…

扫雷(C 语言)

目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘&#xff0c;然后输入坐标进行判断&#xff0c;若是雷&#xff0c;则游戏结束&#xff0c;否则…

MySQL-11.DQL-基本查询

一.DQL语句 -- DQL:基本查询 -- 1.查询指定字段 name&#xff0c;entrydate并返回 select name , entrydate from tb_emp;-- 2.查询返回所有字段 select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp;select * from tb…

农合生活平台用户量已突破5万人大关。

回顾走来的这一路&#xff0c;农合生活一直在成长的路上&#xff0c;从未停歇。 2024年1月&#xff0c;农合生活小程序1.0推出&#xff0c;上线1个月GMV破百万&#xff1b; 2024年4月&#xff0c;农合生活APP上线&#xff0c;注册用户破万&#xff1b; 2024年4月&#xff0c;…

Excelize 开源基础库 2.9.0 版本正式发布

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库&#xff0c;基于 ECMA-376&#xff0c;ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xf…

重构长方法之保留整个对象

在开发中我们会遇到需要从同一个对象中获取多个值的情况&#xff0c;例如从对象rectangle 中获取长方形的宽width和高height&#xff0c;然后将这个两个值传递给方法GetArea去计算面积&#xff1a; public class Demo {public void Method(){//---------------//more code//--…

MVS海康工业相机达不到标称最大帧率

文章目录 一、相机参数设置1、取消相机帧率限制2、修改相机图像格式3、调整相机曝光时间4、检查相机数据包大小&#xff08;网口相机特有参数&#xff09;5、 恢复相机默认参数6、 相机 ADC 输出位深调整 二、系统环境设置1、 网口相机设置2、 USB 相机设置 一、相机参数设置 …