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,然后重复。

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

通过,撒花!

image

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

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


JSer
12 声望3 粉丝

[链接]