首页 > 代码库 > Minimum Depth of Binary Tree,求树的最小深度
Minimum Depth of Binary Tree,求树的最小深度
算法分析:递归和非递归两种方法。
public class MinimumDepthofBinaryTree { //递归,树的最小深度,就是它左右子树的最小深度的最小值+1 public 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)//左子树为空,右子树不为空,则最小深度为右子子树的最小深度+1 { return rmin + 1; } if(rmin == 0) { return lmin + 1; } return Math.min(lmin, rmin)+1; } //非递归,按层遍历 public int minDepth2(TreeNode root) { if(root == null) { return 0; } ArrayList<TreeNode> list = new ArrayList<>(); int count = 1; list.add(root); while(!list.isEmpty()) { ArrayList<TreeNode> temp = new ArrayList<>(); for (TreeNode node : list) { if(node.left == null && node.right == null)//当节点左右子树都为空时,该节点的深度即为树的最小深度 { return count; } if(node.left != null) { temp.add(node.left); } if(node.right != null) { temp.add(node.right); } } count ++;//按层遍历,每循环一次,就是一层,层数加1 list = temp; } return count; }}
Minimum Depth of Binary Tree,求树的最小深度
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。