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 }

 

你可能感兴趣的:(LeetCode)