题目描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。