首页 > 其他 > 详细

LeetCode | Minimum Depth of Binary Tree

时间:2014-02-28 22:40:38      阅读:591      评论:0      收藏:0      [点我收藏+]

题目

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.

分析

题目很简单,需要尽可能写得精炼。

有递归(DFS,解法1)和非递归(BFS,解法2)两种写法。

解法1

public class MinimumDepthOfBinaryTree {
	public int minDepth(TreeNode root) {
		if (root == null) {
			return 0;
		}
		int left = minDepth(root.left);
		int right = minDepth(root.right);
		if (left == 0) {
			return right + 1;
		}
		if (right == 0) {
			return left + 1;
		}
		return Math.min(left, right) + 1;
	}
}
解法2

import java.util.LinkedList;
import java.util.Queue;

public class MinimumDepthOfBinaryTree {
	public int minDepth(TreeNode root) {
		if (root == null) {
			return 0;
		}

		// bfs
		Queue<TreeNode> currentLevel = new LinkedList<TreeNode>();
		Queue<TreeNode> nextLevel = new LinkedList<TreeNode>();
		int level = 1;
		currentLevel.add(root);
		while (true) {
			TreeNode node = currentLevel.poll();

			if (node.left == null && node.right == null) {
				return level;
			}
			if (node.left != null) {
				nextLevel.add(node.left);
			}
			if (node.right != null) {
				nextLevel.add(node.right);
			}

			if (currentLevel.isEmpty()) {
				// swap
				Queue<TreeNode> temp = currentLevel;
				currentLevel = nextLevel;
				nextLevel = temp;
				++level;
			}
		}
	}
}

LeetCode | Minimum Depth of Binary Tree,布布扣,bubuko.com

LeetCode | Minimum Depth of Binary Tree

原文:http://blog.csdn.net/perfect8886/article/details/20078223

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!