题目链接
广度优先:一层一层遍历,当找到有一个叶子节点是空的时候,就找到了最小值。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/class Solution {// 构建包装节点的类public class QueueNode {TreeNode node;int dep;QueueNode(TreeNode node,int dep) {this.node = node;this.dep = dep;}}// 广度优先public int minDepth(TreeNode root) {if(root == null) {return 0;}Queue<QueueNode> queue = new LinkedList<>();queue.offer(new QueueNode(root, 1)); // offer加入,poll出队列while(!queue.isEmpty()) { // 空的话就无法获取节点QueueNode node = queue.poll();TreeNode n1 = node.node;if(n1.left == null && n1.right == null) {return node.dep;}if(n1.left != null) {queue.offer(new QueueNode(n1.left, node.dep+1));}if(n1.right != null) {queue.offer(new QueueNode(n1.right, node.dep+1));}}return 0;}}
