111 Minimum Depth of Binary Tree
来源:互联网 发布:男神执事团类似网络剧 编辑:程序博客网 时间:2024/05/27 06:54
我当时还把这两道题放在一起考过别人,就是为了迷惑对方,以为把max改成min就行,这就是典型的错误的理解,因为只有当左子和右子都不为null时才能有min,只有一个为null,那么depth因为就是另一分支。。。说到底,还是要非常明确minDepth的定义:从root到叶子节点最短的分支,所包含的节点的个数。。。
这题和上一题都是递归调用自身。
之前的代码,I am a 认真 boy:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.List;import java.util.ArrayList;//import java.lang.Math;public class Solution { public int minDepth(TreeNode root) {/* if(root==null) return 0; List<TreeNode> list = new ArrayList<TreeNode>(); list.add(root); int depth=1; // 注意起始值是1,不是0,因为是指这条path上node的数量。 while(true){ List<TreeNode> current = new ArrayList<TreeNode>(); for(TreeNode node : list){ // 轮一层,做几个判断。。。 if(node.left==null&&node.right==null) return depth; if(node.left!=null) current.add(node.left); if(node.right!=null) current.add(node.right); } depth++; list=current; } // solution1, iterration, this works, but too slow, let me try the recursion*/ if(root==null) return 0; if(root.left==null && root.right==null) return 1; if(root.left==null) return 1+minDepth(root.right); if(root.right==null) return 1+minDepth(root.left); if(root.left!=null && root.right!=null) return (1 + Math.min(minDepth(root.left), minDepth(root.right))); return 0; // solution2, recursive, this works faster, but may use more space /* // solution3, same idea with solution2, but more concise code if(root==null) return 0; else return (Math.min(minDepth(root.left), minDepth(root.right)) +1); // 事实证明,这样是对minDepth来说是不行的,因为当只有一个子树的时候,该节点的高度只能是子树的高度,不能是null的高度。 // 但是呢,这个精简的写法,对于maxDepth是见效的。。。可以一试。。*/ }}
今天的代码,3 min, 就是分清楚4种情况就好。
/** * 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; if(root.left==null && root.right==null) return 1; else if(root.left==null && root.right!=null) return 1+minDepth(root.right); else if(root.left!=null && root.right==null) return 1+minDepth(root.left); else return 1+Math.min(minDepth(root.left), minDepth(root.right)); }}
0 0
- LeetCode(111)Minimum Depth of Binary Tree
- LeetCode: Minimum Depth of Binary Tree [111]
- LeetCode 111 Minimum Depth of Binary Tree
- [leetcode 111] Minimum Depth of Binary Tree
- 111Minimum Depth of Binary Tree
- 111Minimum 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
- 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
- mysql 执行计划explain详解
- C语言中的运算符总结
- 欢迎使用CSDN-markdown编辑器
- Linux权限管理和Stat
- apk签名机制与SHA1算法
- 111 Minimum Depth of Binary Tree
- 无连接表的双向1-n关联,和单项关联
- 1016. 部分A+B (15)--PAT乙级
- JavaScript--5.对象编程DOM
- 第十三篇:建造者模式
- JSTL 标签大全详解
- maven创建webapp时没有src、web.xml等问题
- 使用docker和ubuntu服务器开发在线测试平台
- AVL 树 VS红黑树