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 记录.

浙公网安备 33010602011771号