[Tree Breadth First Search] 二叉树的最小深度

本文详细解析了LeetCode上编号为111的题目“二叉树的最小深度”。介绍了二叉树的基本概念,阐述了如何通过广度优先搜索算法找到从根节点到最近叶子节点的最短路径,并提供了具体的C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

leetcode 111、、Minimum Depth of a Binary Tree、难度easy

0. 题干

// 根结点(root)是树的一个组成部分,也叫树根。所有非空的二叉树中,都有且仅有一个根结点简介。
 //它是同一棵树中除本身外所有结点的祖先,没有父结点。

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

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

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

示例:

给定二叉树 [3,9,20,null,null,15,7],

在这里插入图片描述

返回它的最小深度 2.

1. 代码

class Solution {
public:
	int minDepth(TreeNode* root) {
		queue<TreeNode*>q; //创建队列q
		int level= 0; //level为深度
		if (root)
			q.push(root);
		
		while(q.size()) {
			level++;
			int n = q.size();
			
			for (int i = 0; i< n; i++) {
				TreeNode* cur = q.front();
				q.pop();
				if( !cur->left && !cur->right) //如果根结点的左右孩子都不存在,那么直接深度
					return level;
					
				if(cur->left)
					q.push(cur->left);
				if(cur->right)
					q.push(cur->right);
			}
		}
		
		return level;
	}
};

2. 简叙思路

代码比较简单,稍微说下思路;

以 给定二叉树 [3,9,20,null,null,15,7] 为例:

在这里插入图片描述

先存根节点到队列q里面,其值为3,q.size()为1,然后把存到队列里面的根节点pop掉;

依次存放结点值为9和20的结点,q.size()值为2,然后发现值为9的结点的左右孩子都没有;
此时就找到了最小深度,level返回2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值