前言
今天我们还是来看关于数据结构二叉树的题目,充分的了解二叉树。
《二叉树的最小深度》这道题的难度级别属于简单级别,也就是基本的操作类型的题目。
算法题:二叉树的最小深度
从题目的描述来看,我们可以获取每一个节点不为空的路径,直到当前节点的左右子节点都为空时,才算得上是终止,此时获得的深度层数和其他分支的比较后,得到最小的一个值,就是我们最后要的结果值。
在解题的过程中,还要考虑两个特殊的情况。
第一,判断该节点是否为空,如果为空的话,自然也就是0了。
第二,判断两个子节点是否都为空,如果都为空的情况,那也就不用继续下去了,因为当前节点就是最底层的了。
代码展示
本次代码使用的是递归方式不断递归到最后一个符合要求的节点,并且得出最小的终止层数。
/** * 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 int minDepth(TreeNode root) { //为空为0 if (root == null) { return 0; } //有一侧为空直接输出1 if (root.left == null && root.right == null) { return 1; } int z = 10001; if (root.left != null) { z = Math.min(minDepth(root.left), z); } if (root.right != null) { z = Math.min(minDepth(root.right), z); } return z + 1; } }
执行结果:
第一次理解错了题目,失败了一次。
很不理想,但是这和官方题解思路是一样的,只能说更多的牛人在前面。
总结
跟我一起说,遇到处理二叉树,那就是用递归最好了,欢迎大家关注我的刷题专栏。