邵阳市网站建设_网站建设公司_jQuery_seo优化
2026/1/16 12:09:34 网站建设 项目流程

1. 题目

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

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

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

示例 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

2. 题解

2.1 解法1: 递归

主要思想

这道题的关键是搞清楚递归结束条件

叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点
当 root 节点左右孩子都为空时,返回 1
当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度
当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值

classSolution{publicintminDepth(TreeNoderoot){if(root==null)return0;if(root.left==null&&root.right==null)return1;intleft=minDepth(root.left);intright=minDepth(root.right);if(root.left==null)returnright+1;if(root.right==null)returnleft+1;returnMath.min(left,right)+1;}}

参考: 二叉树的最小深度-理解递归结束条件

2.2 解法2: BFS

classSolution{publicintminDepth(TreeNoderoot){if(root==null)return0;Queue<TreeNode>queue=newLinkedList<>();queue.offer(root);intdepth=0;while(!queue.isEmpty()){intsize=queue.size();depth++;for(inti=0;i<size;i++){TreeNodepoll=queue.poll();if(poll.left==null&&poll.right==null){returndepth;}if(poll.left!=null){queue.offer(poll.left);}if(poll.right!=null){queue.offer(poll.right);}}}return0;}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询