博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Minimum Depth of Binary Tree
阅读量:6072 次
发布时间:2019-06-20

本文共 2086 字,大约阅读时间需要 6 分钟。

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.

思路分析:这题和相似,可是如今要返回最小深度,递归的解法须要加一个特殊的推断。就是假设某个node比方root仅仅有一个孩子,这时不能返回最小深度是0。由于仅仅有在叶子节点处(而不是空处)才干计算深度,所以当左孩子为空,传入右孩子递归调用;当右孩子为空,传入左孩子递归调用。

而在没有这个问题,由于我们是求最大深度,某个node仅仅有一个孩子,我们会计深度为1而不是0。

递归解法例如以下。多加了对仅仅有一个孩子的情况的推断:

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int minDepth(TreeNode root) {        if(root == null) return 0;        if(root.left == null) return minDepth(root.right) + 1;        if(root.right == null) return minDepth(root.left) + 1;        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;    }}

非递归解法借助队列进行BFS计算深度。当遇到第一个叶子节点返回深度就可以,最后加了一个return 0保证返回出口,事实上叶子节点必定存在。一定会从while循环里面就返回。

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int minDepth(TreeNode root) {        if(root == null) return 0;        LinkedList
treeNodeQueue = new LinkedList
(); int level = 1; treeNodeQueue.add(root); int curLevelNum = 1; int nextLevelNum = 0; while(!treeNodeQueue.isEmpty()){ TreeNode curNode = treeNodeQueue.poll();//find and remove; different from peek if(curNode.left == null && curNode.right == null) return level; curLevelNum--; if(curNode.left != null){ treeNodeQueue.add(curNode.left); nextLevelNum++; } if(curNode.right != null){ treeNodeQueue.add(curNode.right); nextLevelNum++; } if(curLevelNum == 0){ level++; curLevelNum = nextLevelNum; nextLevelNum = 0;//added a level } } return 0; }}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
Mysql-MMM高可用群集部署
查看>>
为什么分布式一定要有消息队列?
查看>>
高并发大容量NoSQL解决方案探索
查看>>
MySQL基础语句
查看>>
python操作sql server2008 pyodbc
查看>>
H3C AP胖转瘦方法大全
查看>>
基于tcp/ip以太网通信实现0-5v,4-20ma模拟量AI采集以及模拟量AO输出控制-综科智控...
查看>>
PHP执行系统命令的有几个常用的函数
查看>>
lnmp命令整理
查看>>
SparkStreaming基础理论
查看>>
程序员笔记|Sharding-JDBC 使用入门和基本配置
查看>>
关于安装H3c Cloud Lab的一些报错问题
查看>>
java中split()方法中以"* ^ : | , ."作为分隔符的处理方法
查看>>
我国大数据未来的发展方向
查看>>
C语言学生成绩管理系统
查看>>
powershell远程检查多个oracle数据库表空间使用率
查看>>
C链表
查看>>
Oracle教程之分析Oracle索引扫描四大类
查看>>
2016.8.23_每日IT单词
查看>>
Centos/ubuntu配置SVN服务
查看>>