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