以下为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);