一、求二叉树的最大深度
问题描述:
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
示例:
给定二叉树 [3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7返回它的最大深度 3.
解题思路:
通过递归,依次查找左、右子节点的最大深度,并返回给根节点一个最大深度。
代码:
var maxDepth = function(root) {
// 节点为空
if (!root) {
return 0;
}
// 每次向下查询时深度加1
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
};
二、求二叉树的最小深度
问题描述:
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
示例:
给定二叉树 [3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7返回它的最小深度 2
解题思路:
通过递归,依次查找左、右子节点的最小深度,并返回给根节点一个最小深度。
特别注意:当根节点的左子树或右子树为空时,最小深度不是1
扫描二维码关注公众号,回复:
9749372 查看本文章
例:
3 \ 20 \ 7此时的最小深度不是1,而是3
代码:
var minDepth = function(root) {
if (!root) {
return 0;
}
let l = minDepth(root.left); //先左后右
let r = minDepth(root.right);
if (root.left == null || root.right == null) {
//如果只有左侧叶子节点或只有右侧叶子节点那么深度应该是2而不是1
return l + r + 1;
}
// 每次深度加一
return Math.min(l, r) + 1;
};