【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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步