以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
58. 返回DOM tree的高度

使用递归解决该问题:

function getTreeHeight(node) {
  if (!node) return 0; // 如果节点不存在,返回0
  let height = 0;
  for (let i = 0; i < node.children.length; i++) { // 递归遍历子节点
    height = Math.max(height, getTreeHeight(node.children[i])); // 取子树高度的最大值
  }
  return height + 1; // 当前节点的高度为子树的高度加一
}

// 示例使用
const tree = document.querySelector('div');
const height = getTreeHeight(tree);
console.log(height);

不使用递归解决该问题可以使用BFS(广度优先遍历)实现,具体实现可参考以下代码:

function getTreeHeight(root) {
  let height = 0;
  const queue = [{node: root, level: 1}];
  while (queue.length > 0) {
    const {node, level} = queue.shift(); // 从队列中取出一个节点
    height = Math.max(height, level); // 更新高度为当前层数和已知高度的最大值
    for (const child of node.children) { // 遍历当前节点的所有子节点
      queue.push({node: child, level: level + 1}); // 将子节点加入队列,并将层数加一
    }
  }
  return height;
}

// 示例使用
const tree = document.querySelector('div');
const height = getTreeHeight(tree);
console.log(height);