求二叉树的最大or最小深度

一、求二叉树的最大深度

问题描述: 

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

示例:

给定二叉树 [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;
};
发布了67 篇原创文章 · 获赞 4 · 访问量 5951

猜你喜欢

转载自blog.csdn.net/DZY_12/article/details/103992410
今日推荐