题目描述

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

3

/ \
9 20

/  \

15 7

返回它的最小深度  2.

解题思路

一、递归
使用递归找节点的深度,
找到左右树的最小值,值取当前值和左右节点返回值的最小值
返回的值为最小值+1;
二、迭代
使用队列
1、首先将root压入队列
2、如果root的子节点非全空,则压入队列,同时将root节点弹出队列;完成一次循环,节点数可以+1;
3、对队列中的节点的子节点进行遍历,如果出现了全空节点则终止,否则将非空节点压入队列,同时将上一循环的所有节点弹出队列
4、在队列为空的时候终止

语言积累和技巧

1、递归的法则
终止条件
运算规则
递归
2、局部处理
拿中间节点来进行独立判断,对其左右两个节点树进行处理,获取返回值的最小值
终止条件是 节点为空,或者是叶子节点
3、迭代的终止条件是叶子节点,如果有一个子节点非空的话,都要继续

vscode 代码链接

https://github.com/lunaDolphi...
https://github.com/lunaDolphi...


blueDolphin
12 声望1 粉丝