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; } }
LeetCode - 111. 二叉树的最小深度
猜你喜欢
转载自blog.51cto.com/tianyiya/2172962
今日推荐
周排行