剑指offer-二叉树的深度-JavaScript
来源:     阅读:573
云上智慧
发布于 2020-04-24 20:38
查看主页

题目形容:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

解法 1: 递归

递归的写法非常直观。对于一棵二叉树来说,它的高度等于左右子树的高度最大值,加上 1。

代码实现如下:

// ac地址:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/// 原文地址:https://xxoo521.com/2020-03-22-max-depth//** * @param {TreeNode} root * @return {number} */var maxDepth = function(root) {    if (!root) return 0;    return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));};

解法 2: 层序遍历

按照二叉树的“层”去遍历,最后返回层的数目。这题和《剑指 offer - 从上到下打印二叉树 III - JavaScript》思路完全一样。

细节请看代码注释,代码实现如下:

// ac地址:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/// 原文地址:https://xxoo521.com/2020-03-22-max-depth//** * @param {TreeNode} root * @return {number} */var maxDepth = function(root) {    if (!root) return 0;    let res = 0;    const queue = [root];    while (queue.length) {        let levelNum = queue.length; // 当前层中二叉树的节点数量        ++res;        // 依次将下一层的二叉树节点放入队列        while (levelNum--) {            const node = queue.shift();            if (node.left) queue.push(node.left);            if (node.right) queue.push(node.right);        }    }    return res;};

更多资料

整理不易,若对您有帮助,请给个「关注+点赞」,您的支持是我升级的动力 ??

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
WIN7下IIS配置PHP7和MSSQL的必备文件
关于 Kafka 的少量总结与思考
6个web前台核心技术,你学到哪个了呢?
卢伟冰熊军民隔空互怼,其实争的是华为库存压力大不大
一键解锁Cookie一律知识点
首页
搜索
订单
购物车
我的