LinCode 刷题 之二叉树最小深度

http://www.lintcode.com/zh-cn/problem/minimum-depth-of-binary-tree/  题目描述信息

二叉树的结构定义如下:

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */

给出一棵如下的二叉树:

1

/     \

2       3

/    \

4      5

这个二叉树的最小深度为 2

思路 层级访问儿二叉树某个节点的左子树和右子数都没有 就是最小深度,广度优先遍历二叉树即可(队列)

 1 public class Solution {
 2     /**
 3      * @param root: The root of binary tree.
 4      * @return: An integer.
 5      */
 6     public int minDepth(TreeNode root) {
 7        Queue<TreeNode> queue=new LinkedList<TreeNode>();
 8
 9         int num;
10         if(root==null){
11             num=0;
12         }else{
13             num=1;
14             queue.add(root);
15         }
16         while(!queue.isEmpty()){
17             int size = queue.size();
18             //遍历本层级的所有元素
19             for(int i=0;i<size;i++){
20                 TreeNode node = queue.poll();
21                 if(node.left==null&&node.right==null){
22                     queue=new LinkedList<>();//找到最深节点返回
23                    return num;
24                 }else{
25                     if(node.left!=null){
26                         queue.offer(node.left);
27                     }
28
29                     if(node.right!=null){
30                         queue.offer(node.right);
31                     }
32                 }
33             }
34             //层级+1
35             num++;
36
37         }
38
39         return num;
40     }
41 }
时间: 2024-11-01 00:59:43

LinCode 刷题 之二叉树最小深度的相关文章

递归求取二叉树最小深度和最大深度

public class Binarytreedept { /*  * 输出二叉树最小深度     * 核心思想:根节点到达最近的叶子节点的路径长度.  * 1.当根为空时,输出0.  * 2.当左子树为空时,输出右子树深度+1.  * 3.当右子树为空时,输出左子树深度+1.  * 4.以上条件都不满足时,输出min(左子树深度,右子树深度)+1.  *   * 输出二叉树最大深度   * 核心思想:根节点到达最远的叶子节点的路径长度.  * 1.如果二叉树为空,则深度为0;  * 2.如果不

【JAVA】【leetcode】【查找二叉树最小深度】

题目:  minimum-depth-of-binary-tree 要求: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. 思路: 两种方法: 第一,使用递归,相当于遍历了整个二叉树,递归返回深度浅的那棵子树的深度. 第二,按层检查

HDU5697 刷题计划 dp+最小乘积生成树

分析:就是不断递归寻找靠近边界的最优解 学习博客(必须先看这个): 1:http://www.cnblogs.com/autsky-jadek/p/3959446.html 2:http://blog.csdn.net/u013849646/article/details/51524748 注:这里用的最小乘积生成树的思想,和dp结合 每次找满足条件的最优的点,只不过BZOJ裸题的满足条件是形成一棵树 这个题是大于m,生成树借用最小生成树进行求解最优,大于m用dp进行求解最优 #include

剑指offer——python【第38题】二叉树的深度

题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 解题思路 想了很久..首先本渣渣就不太理解递归在python中的实现,其次又不知道怎么去找到最长路径,真是很费脑子,开始正题吧 首先明确二叉树每个节点都可以看作"根节点",依次延伸下去(二叉树的递归定义),对于根节点,我要求这个节点的最大深度,那么只要求两棵左右子树的最大深度,并且max一下,然后+1就行了:然后对于左右两棵子树,也只要求它们的两棵左右子树

刷题18 二叉树的镜像

描述:  操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树的镜像示例: 源二叉树 8 / 6 10 / \ / 5 7 9 11 镜像二叉树 8 / 10 6 / \ / 11 9 7 5 很容易的想到了递归: 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) {

[LC]111题 二叉树的最小深度 (递归)

①题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最小深度  2. ②思路 使用深度优先搜索 ③代码 1 class Solution { 2 public int minDepth(TreeNode root) { 3 if (root == null) { 4 return 0; 5 } 6 if ((root.left ==

LeetCode第111题:二叉树的最小深度

问题描述 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 解题思路 刚开始想得很简单,不就是类比求树的深度,空树返回0,非空树返回左右子树最小深度+1就ok吗? 如果你这么想,那真的too young too simple,sometimes naive. 因为很明显这种思路忽略了

【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】

[111-Minimum Depth of Binary Tree(二叉树的最小深度)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 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. 题目大意 给定

155 二叉树的最小深度

原题网址:https://www.lintcode.com/problem/minimum-depth-of-binary-tree/description 描述 给定一个二叉树,找出其最小深度. 二叉树的最小深度为根节点到最近叶子节点的距离. 您在真实的面试中是否遇到过这个题?  是 样例 给出一棵如下的二叉树: 1 /     \ 2       3 /    \ 4      5 这个二叉树的最小深度为 2 标签 二叉树 Depth-first Search(DFS) 思路:可参照二叉树的