leetcode------Minimum Depth of Binary Tree
标题: | Minimum Depth of Binary Tree |
通过率: | 29.2% |
难度: | 简单 |
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.
对于求树的深度就是递归比较,但是求树的最短路径的话我认为分层去查看,如果某一层中有一个节点没有左右子树,那么该层就是树的最短路径,
在网上查找的算法中递归调用与树深的递归调用一样,但是再递归时要判断一个right=0时返回left+1,反之返回right+1,对于这个判断我不知道意义在哪里,先贴出网上的做法如下:
1 public class Solution { 2 public int minDepth(TreeNode root) { 3 int depth1=0; 4 int depth2=0; 5 if(root==null) return 0; 6 //left 7 depth1=minDepth(root.left); 8 depth2=minDepth(root.right); 9 if(depth1==0)return depth2+1; 10 if(depth2==0)return depth1+1; 11 if(depth1<depth2) 12 return depth1+1; 13 else 14 return depth2+1; 15 } 16 }
我的做法就是按层次进行判断,代码如下:
1 /** 2 * Definition for binary tree 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public int minDepth(TreeNode root) { 12 if(root==null)return 0; 13 LinkedList<TreeNode> nodes = new LinkedList<TreeNode>(); 14 LinkedList<Integer> counts = new LinkedList<Integer>(); 15 nodes.add(root); 16 counts.add(1); 17 while(!nodes.isEmpty()){ 18 int count=counts.remove(); 19 TreeNode tree=nodes.remove(); 20 if(tree.left!=null){ 21 nodes.add(tree.left); 22 counts.add(count+1); 23 } 24 if(tree.right!=null){ 25 nodes.add(tree.right); 26 counts.add(count+1); 27 } 28 if(tree.left==null&&tree.right==null) 29 return count; 30 } 31 return 0; 32 } 33 }