题目
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
思路
- 1、判断根节点是否存在
- 2、判断根节点是否有左右子树
- 3、如果左右节点都存在,递归求解左右子树的最小深度
- 4、如果只有左子树或者只有右子树,则递归求解右子树或者左子树的最小深度
代码
var minDepth = function(root) {
if(!root) return 0
let leftDepth=minDepth(root.left)
let rightDepth=minDepth(root.right)
//叶子节点是指没有子节点的节点,所以,只要节点有一个子树为空,但另一个子树不为空,就不是叶子节点,要返回不为空的子树的深度
return root.left==null||root.right==null?leftDepth+rightDepth+1:1+Math.min(leftDepth,rightDepth)
};