①题目
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最小深度 2.
②思路
使用深度优先搜索
③代码
1 class Solution { 2 public int minDepth(TreeNode root) { 3 if (root == null) { 4 return 0; 5 } 6 if ((root.left == null) && (root.right == null)) { 7 return 1; //当“当前结点”为叶子结点时,返回1,退出本次递归,并且跳过了17行min_depth的自加。 8 } 9 10 int min_depth = Integer.MAX_VALUE; //因为要求最小深度,所以一开始把它设置为最大的int整数,这与530题题解的第三行异曲同工,也与783的低4行类似。 11 if (root.left != null) { 12 min_depth = Math.min(minDepth(root.left), min_depth); 13 } 14 if (root.right != null) { 15 min_depth = Math.min(minDepth(root.right), min_depth); 16 } 17 return min_depth + 1; //每递归一次,只要不是第3行,第6行的情况,那么最终都会在这里让min_depth加个1。 18 } 19 } 20 //我们用深度优先搜索来解决这个问题。 21 //这是我看的别人的答案。
④学到的东西
1、判断叶子结点,就是直接判断左右孩子为空不。
2、要学会这种第17行给min_depth自加的行为。
3、再次深化第10行在自己脑子里的记忆。
原文地址:https://www.cnblogs.com/zf007/p/11637921.html
时间: 2024-11-06 03:47:22