leetcode-1 Minimum Depth Of Binary Tree (二叉树叶子节点的最小深度)

该博客介绍了LeetCode第1题的解决方案——找到二叉树的最小深度。作者通过解释思路,指出最小深度是根节点到最近叶子节点的最短路径长度,并提出利用层次遍历来解决此问题。Java代码展示了如何用两个栈来实现这一算法,当发现某一层的第一个无子节点的节点时,即找到了最小深度。博主邀请读者参与讨论。
摘要由CSDN通过智能技术生成

题目:

Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

给定一个二叉树,求它的最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数。

想法:

也就是对于二叉树的每一层,如果这一层的某一个节点是没有子节点的,那么当前层的层数就是我们要找的答案。如下图

节点1是第一层,节点2和节点3是第二层,节点4是第三层,那么对于这个二叉树来讲,最小深度就是2,从根节点1到叶子节点3需要经过1和3两个节点。

扩展的想一下,所以应用层次遍历的方法,只需要从第一层向下遍历,知道出现第一个没有子节点的节点a,那么这个a所在的层n就是这个二叉树的最小深度。

代码:

Java实现,使用两个栈去实现层次遍历,栈a存储当前层节点,栈b存储栈a中节点的子节点。如果栈a中有某一个节点没有子节点时,得到当前节点所在的层数,就是最小深度。

二叉树:

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值