专栏首页BFE.dev前端刷题日记BFE.dev前端刷题#58. 获取DOM tree高度
原创

BFE.dev前端刷题#58. 获取DOM tree高度

bfe.dev 是一个针对前端的刷题网站,像是前端的LeetCode。该系列文章是我在上面的刷题日记。

题目58

BFE.dev#58 获取DOM tree高度

分析

/**
 * @param { HTMLElement | null } tree
 * @returns { number }
 */
function getHeight(tree) {
  // your code here         
}
复制代码

一个tree的高度 = 子tree的最大高度 + 1。由此我们可以很容易地得到递归解法。

开始代码(递归)

注意特殊null case的处理,和 Math.max(...[])的使用。

用迭代重写

每次遇到递归,都要想象如果不用递归怎么写。这是程序员面试的基本要求。

就本题目而言,我们其实想要知道这个tree有多少层,那么就可以用一个queue一层一层地遍历就好了,每次扫荡一层,就计数+1。大概这样的结构

在while 循环中,我们需要做的事情很简答:

  1. 把一层的node全部取出来
  2. 计数 +1
  3. 把下一层的节点放回queue,然后重复。

由此可以得到一个迭代的实现。

通过,撒花!

这个题目很简单,有兴趣可以去 bfe.dev 自己试试。

希望能帮助到你,下次见!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • BFE.dev前端刷题64 - Promise reject的时候自动retry

    其中调用fetcher的逻辑可能会被调用很多次,所以把它wrap在一个function以便未来之需。

    JSer
  • BFE.dev前端刷题2 - 实现curry() 并支持placeholder

    实现curry() 并支持placeholder. implement curry() with placeholder support

    JSer
  • BFE.dev前端刷题 33. 实现Promise.allSettled()

    和Promise.all()不同,Promise.allSettled()即使是遇到rejection也会等待所有的promise到最后。所以我们只需要用一个a...

    JSer
  • poj 3468 A Simple Problem with Integers线段树区间修改

    题目意思很简单,有N个数,Q个操作, Q l r 表示查询从l到r 的和,C l r v 表示将从l到r 的值加上v,明显的线段树,不知道线段树的人肯...

    xindoo
  • 终端显示树状文件结构

    BY
  • centos中tree插件的使用与注意事项

    1 tree的安装 yum -y install tree 使用时直接输入tree 目录名,即可显示该目录的树形结构,示例如下: ? 这样查看目录结构一目了然,...

    闵开慧
  • linux下的小工具

    咪啪咪啪
  • 洛谷P3377 【模板】左偏树(可并堆)

    题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y...

    attack
  • tree

    编程的时候,经常需要描述文件夹结构。如果对应的操作系统是centos的话,截图也很难说明问题。所以,我找到了这个tree命令,很好用。一个tree命令,就可以列...

    胡齐
  • linux命令tree的使用

    有时候我们新建完项目,想查看一下项目的目录结构,此时我们就可以使用tree命令了,但是mac电脑没有自带tree命令,我们需要安装tree。

    挥刀北上

扫码关注云+社区

领取腾讯云代金券