【Leetcode】111. Minimum Depth of Binary Tree
来源:互联网 发布:ubuntu解压rar文件 编辑:程序博客网 时间:2024/06/11 03:38
方法一:递归
思路:
(1)若树为空,直接返回0。
(2)若左子树为空,则返回右子树的最小深度+1。
(3)若右子树为空,则返回左子树的最小深度+1。
(4)否则,返回左子树的最小深度和右子树的最小深度的较小值+1。
注意:需要特殊考虑一边子树为空的情况。
/** * Definition for a binary tree node. * 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; else if (root.left == null) return minDepth(root.right) + 1; else if (root.right == null) return minDepth(root.left) + 1; return Math.min(minDepth(root.left), minDepth(root.right)) + 1; }}
Runtime:1ms
方法二:非递归
思路:
(1)若树为空,直接返回0。
(2)创建一个队列queue,用于存放所有节点,把根节点加入队列,用minDepth记录最小高度。
(3)遍历队列,队列里的节点正是当前层得到节点,队列长度正是当前层的节点个数,遍历当前层的所有节点。若其左右孩子均为空,则返回maxDepth;若其左孩子不为空,则左孩子加入队列,若其右孩子不为空,则右孩子加入队列。注意每一层处理时需要先把队列长度保存在变量中,否则内层循环会导致队列长度递减。
/** * Definition for a binary tree node. * 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; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); int minDepth = 1; while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode node = queue.poll(); if (node.left == null && node.right == null) return minDepth; if (node.left != null) queue.add(node.left); if (node.right != null) queue.add(node.right); } minDepth++; } return minDepth; }}Runtime:1ms
1 0
- LeetCode 111. Minimum Depth of Binary Tree
- [LeetCode]111.Minimum Depth of Binary Tree
- 【LeetCode】111.Minimum Depth of Binary Tree
- [Leetcode] 111. Minimum Depth of Binary Tree
- [leetcode] 111. Minimum Depth of Binary Tree
- 111. Minimum Depth of Binary Tree LeetCode
- 【LeetCode】111. Minimum Depth of Binary Tree
- LeetCode *** 111. Minimum Depth of Binary Tree
- LeetCode 111. Minimum Depth of Binary Tree
- leetcode-111. Minimum Depth of Binary Tree
- LeetCode-111.Minimum Depth of Binary Tree
- LeetCode 111.Minimum Depth of Binary Tree
- Leetcode 111. Minimum Depth of Binary Tree
- [leetcode]111.Minimum Depth of Binary Tree
- 111.[Leetcode]Minimum Depth of Binary Tree
- LeetCode 111. Minimum Depth of Binary Tree
- 【leetcode】111. Minimum Depth of Binary Tree
- LeetCode 111. Minimum Depth of Binary Tree
- CentOS7.2下安装pdf2htmlEX
- Linux文档格式乱码与转换
- leetcode 476. Number Complement
- spring boot入门
- 串口
- 【Leetcode】111. Minimum Depth of Binary Tree
- css 中的浮动
- Android OpenGL ES 2.0学习研究 (一)
- LDD3源码分析之访问控制
- HTML name、id、class 的区别
- caffe增加自己的layer实战(上)--caffe学习(10)
- Webview File域同源策略绕过漏洞
- Serializable学习
- unity3d中脚本生命周期(MonoBehaviour lifecycle)