[LeetCode-55]Minimum Depth of Binary Tree
来源:互联网 发布:pdfconverter软件下载 编辑:程序博客网 时间:2024/06/06 08:32
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.
Analysis:
we could solve this in recursive and iterative way.
recursive, a little similar with maximum depth of binary tree. Different is to handle the situation that one subchild is null,
like [1,#,2].
java
public int minDepth(TreeNode root) { if(root == null) return 0; int left = minDepth(root.left); int right = minDepth(root.right); if(left == 0 && right ==0) return 1; if(left == 0) left = Integer.MAX_VALUE; if(right == 0) right = Integer.MAX_VALUE; return Math.min(left, right)+1; }
c++
int minDepth(TreeNode *root) { if(root == NULL) return 0; int lmin = minDepth(root->left); int rmin = minDepth(root->right); if(lmin==0 && rmin == 0) return 1; if(lmin == 0) lmin = INT_MAX; if(rmin == 0) rmin = INT_MAX; return min(lmin, rmin)+1; }2. iterative way
Since the aim is to find the shortest path, the BFS is better. A queue is used to store every node from the binary tree in depth order. Pop each node, if there exist its left and right tree store it, otherwise if it is left node, return its depth. To store each node and its depth
c++
int minDepthBFS(TreeNode *root) { queue<pair<TreeNode*, int>> q; if(root == NULL) return 0; q.push(make_pair(root,1)); while(!q.empty()){ pair<TreeNode*, int> cur = q.front(); q.pop(); if(!cur.first->left && !cur.first->right) return cur.second; if(cur.first->left) q.push(make_pair(cur.first->left,cur.second+1)); if(cur.first->right) q.push(make_pair(cur.first->right,cur.second+1)); }}
java
public int minDepthBFS(TreeNode root){if(root == null) return 0;ArrayList<TreeNode> last = new ArrayList<TreeNode>();last.add(root);int count =1;while(!last.isEmpty()){ArrayList<TreeNode> cur = new ArrayList<TreeNode>();for (TreeNode treeNode : last) {if(treeNode.left == null && treeNode.right == null) return count;if(treeNode.left != null) cur.add(treeNode.left);if(treeNode.right != null) cur.add(treeNode.right);}count++;last = new ArrayList<TreeNode>(cur);}return count;}
1 0
- [LeetCode-55]Minimum Depth of Binary Tree
- LeetCode: Minimum Depth of Binary Tree
- [Leetcode] Minimum Depth of Binary Tree
- LeetCode : Minimum Depth of Binary Tree
- leetcode 31: Minimum Depth of Binary Tree
- [LeetCode] Minimum Depth of Binary Tree - BFS
- [LeetCode] Minimum Depth of Binary Tree - DFS
- 【leetcode】Minimum Depth of Binary Tree
- LeetCode:Minimum Depth of Binary Tree
- [LeetCode]Minimum Depth of Binary Tree
- [Leetcode]Minimum Depth of Binary Tree
- [leetcode]Minimum Depth of Binary Tree
- Leetcode: Minimum Depth of Binary Tree
- LeetCode-Minimum Depth of Binary Tree
- [leetcode] Minimum Depth of Binary Tree
- LeetCode - Minimum Depth of Binary Tree
- 【Leetcode】Minimum Depth of Binary Tree
- LeetCode | Minimum Depth of Binary Tree
- mysqldump死住(实际是导致mysqld crash)
- poj 3261 后缀数组 找重复出现k次的子串(子串可以重叠)
- 认识 C++ 中的explicit 关键字
- 诺基亚5800入手十天谈感受
- 算法面试(数组)
- [LeetCode-55]Minimum Depth of Binary Tree
- 2014年百度之星程序设计大赛 - 资格赛 Labyrinth
- 第一天-解决了轮播图片不能显示和部分文件不能下载两个问题
- 在eclipse下使用java调用weka
- cocos2d-x的场景类和生命周期
- java50题----06公约数和公倍数
- uva 12097 二分
- 优秀RD的checklist
- AJAX跟JSON的一些理解