Will I leave?.|

Canyooo

园龄:3年6个月粉丝:1关注:1

【LeetCode】#111. 二叉树的最小深度

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

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

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

示例 1:

 

 

 

 

输入:root = [3,9,20,null,null,15,7]
输出:2

示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5
复制代码
方法一:递归
//最大深度是max最小深度不就是min了吗,这题我会。
//做完马上错误,没有考虑到若是没有左节点只有右节点的情况。因此得多两个判断语句。
class Solution { public int minDepth(TreeNode root) { if(root == null)return 0; if(root.left == null && root.right != null)return 1 + minDepth(root.right);  //若是左无右有则返回右深度 if(root.right == null && root.left != null)return 1 + minDepth(root.left);   //若是左有右无则返回左深度 return 1 + Math.min(minDepth(root.left), minDepth(root.right)); } }
复制代码
复制代码
方法二:广度优先遍历
class
Solution { class QueueNode { TreeNode node; int depth; public QueueNode(TreeNode node, int depth) { this.node = node; this.depth = depth; } } public int minDepth(TreeNode root) { if (root == null) { return 0; } Queue<QueueNode> queue = new LinkedList<QueueNode>(); queue.offer(new QueueNode(root, 1)); while (!queue.isEmpty()) { QueueNode nodeDepth = queue.poll(); TreeNode node = nodeDepth.node; int depth = nodeDepth.depth; if (node.left == null && node.right == null) { return depth; } if (node.left != null) { queue.offer(new QueueNode(node.left, depth + 1)); } if (node.right != null) { queue.offer(new QueueNode(node.right, depth + 1)); } } return 0; } }
复制代码

知识点:

总结:

每次题目一换,判断的特殊情况也会有,不能想当然。

本文作者:Canyooo

本文链接:https://www.cnblogs.com/canyooo/p/15313645.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Canyooo  阅读(40)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 黑洞里 方大同
黑洞里 - 方大同
00:00 / 00:00
An audio error has occurred.

Not available