111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:

输入: root = [3,9,20,null,null,15,7]
输出: 2方案一:BFS广度优先遍历
查询二叉树的最小深度,将二叉树视为自顶向下,一层层组成。BFS广度优先编辑即每次都获取当前一层的所有node节点,将当前层节点遍历,查询出第一个node.left和node.right都是null的就是第一个叶子节点。
/**
 * @method minDepthByBFS
 * @description 通过广度优先遍历获取最小深度
 * @param root {TreeNode | null}
 * @returns {number}
 */
function minDepth(root: TreeNode | null): number {
  // 临界点条件
  if (root === null) {
    return 0;
  }
  // 存储节点
  const queue = [root];
  // 定义深度
  let depth = 1;
  // 如果当前queue队列中有值,说明存在一层node
  while (queue.length) {
    // 获取当前队列元素的值
    const len = queue.length;
    // 操作的都是当前层node
    // 注意这里的for循环终止条件len是当前层所有node的长度
    for (let i = 0; i < len; i++) {
      // 每次都取出队头第一个元素
      const node = queue.shift();
      // 当前这个节点的left和right都不存在,说明这个是叶子节点
      if (node.left === null && node.right === null) {
        // 直接返回结果即可
        return depth;
      }
      // 将当前节点的left、right放入
      if (node.left) {
        queue.push(node.left);
      }
      if (node.right) {
        queue.push(node.right)
      }
    }
    // 每遍历一层,深度+1
    depth++
  }
};
结语
以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得点赞、收藏呀,关注胡哥有话说,学习前端不迷路,欢迎多多留言交流...










