题目内容
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
示例
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:2
示例 2:
输入:root = [2,null,3,null,4,null,5,null,6]
输出:5
提示
1、树中节点数的范围在 [0, 10^5] 内
2、-1000 <= Node.val <= 1000
题解
本题求二叉树的最小深度,这里可以采用类似递归的思路求解。具体思考如下:
对于每一个节点来说,
1、如果其没有左右儿子,则说明该节点是叶子节点,因此以该点作为根的子树的深度为1
2、若其存在儿子,那么有以下三种情况:
(1)存在左儿子,不存在右儿子,则深度为左儿子的深度+1
(2)存在右儿子,不存在左儿子,则深度为右儿子的深度+1
(3)左右儿子均存在,则深度为min(左儿子深度,右儿子深度)+1
最后,返回根节点的深度。
注意:通过节点的层次定义二叉树的深度,且狭义上指的是最大的深度,根为第一层,树中结点的最大层次就为树的深度或者高度。如果树只有一个结点,则深度为1,如果根节点只有左子树没有右子树,输的深度就是左子树的深度+1;反之为右子树的深度+1。如果既存在左子树也存在右子树,则就是左右子树深度的较大值+1。本题由于题目要求求较小的深度,因此在处理的时候,就需要用较小的子树深度。
代码
/** |