import java.util.LinkedList;
import java.util.Objects;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
}
class Solution {
private boolean isLeaf(TreeNode root) {
if (Objects.isNull(root)) {
return false;
}
return Objects.isNull(root.left) && Objects.isNull(root.right);
}
public int minDepth(TreeNode root) {
if (Objects.isNull(root)) {
return 0;
}
LinkedList<QueueData> queue = new LinkedList<>();
QueueData data = new QueueData(root, 1);
queue.add(data);
while (! queue.isEmpty()) {
data = queue.poll();
@SuppressWarnings("unchecked")
TreeNode node = data.treeNode;
if (isLeaf(node)) {
return data.deep;
}
if (Objects.nonNull(node.left)) {
QueueData queueData = new QueueData(node.left, data.deep + 1);
queue.add(queueData);
}
if (Objects.nonNull(node.right)) {
QueueData queueData = new QueueData(node.right, data.deep + 1);
queue.add(queueData);
}
}
return -1;
}
}
class QueueData {
TreeNode treeNode;
int deep;
QueueData(TreeNode treeNode, int deep) {
this.treeNode = treeNode;
this.deep = deep;
}
}
转载于:https://blog.51cto.com/tianyiya/2172962