剑指offer-二叉树的深度-JavaScript

  • 时间:2020-04-24 20:38 作者:心谭 来源: 阅读:572
  • 扫一扫,手机访问
摘要:题目形容:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。解法 1: 递归递归的写法非常直观。对于一棵二叉树来说,它的高度等于左右子树的高度最大值,加上 1。代码实现如下:// ac地址:https://leetcode

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

解法 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;};

更多资料

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

  • ??Blog:剑指 Offer 题解 + JS 代码
  • ??Github : dongyuanxin/blog
  • ?? 公众号:心谭博客
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2025含金量排名前十计算机专业证书(2025-10-15 20:51)
【系统环境|】你有白帽众测 我有黑帽雇佣(2025-10-15 20:50)
【系统环境|】印度理工学院成功开发出针对5G网络攻击的最新软件解决方案(2025-10-15 20:49)
【系统环境|】道德黑客与黑客教程(2025-10-15 20:49)
【系统环境|】苹果翻车!macOS 15 竟藏“后门”,黑客能直接偷你所有密码(2025-10-15 20:47)
【系统环境|】解密“被墙”玄学:为什么我的网络方案能做到长期稳定?(2025-10-15 20:46)
【系统环境|】NAS软路由/防火墙/网络安全需要注意哪些?如何保护你的网络设备(2025-10-15 20:45)
【系统环境|】你真的理解防火墙吗?(2025-10-15 20:44)
【系统环境|】苹果手机一键换机教程详解(2025-10-15 20:44)
【系统环境|】二手iPhone到手后怎么快速验机?(2025-10-15 20:43)
手机二维码手机访问领取大礼包
返回顶部