LeetCode lc104.二叉树的最大深度

1. 题目地址:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

2. 代码:

【1】递归 DFS:我们知道一棵树的最大深度,是 根结点 的 左子树、右子树 最大深度 + 1,那么可以使用递归来做.

var maxDepth = function(root) {
  if (!root) {
    return 0;
  }
  return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
};

【2】非递归 BFS:使用数据结构:队列,思想是,每次检查当前层是否有结点,若存在,则层数加一,并将当前层的所有结点出队列,将其下一层结点入队列,继续这个循环.

var maxDepth = function (root) {
  if (!root) {
    return 0;
  }
  let count = 0;
  let queen = [root];
  let node = null;
  while (queen.length) {
    count++;
    let q_size = queen.length;
    for (let i = 0; i < q_size; i++) {
      node = queen.shift();
      if (node.left) {
        queen.push(node.left);
      }
      if (node.right) {
        queen.push(node.right);
      }
    }
  }
  return count;
};

这里有一个需要注意的地方,queen.length 在内层循环时时不断变化的,因此需要使用一个变量 q_size 记录.

posted @ 2021-09-27 21:03  TwinkleG  Views(24)  Comments(0)    收藏  举报