如果不用递归,如何遍历出一棵树js
时间: 2024-10-10 18:01:48 浏览: 8
非递归遍历JavaScript树可以使用迭代方法,这里有一个示例,展示了如何遍历树并添加节点到HTML元素中,不依赖于递归调用:
```javascript
// 定义一个树结构的数据结构
let treeData = {
name: "root",
children: [
{
name: "child1",
children: [{ name: "grandchild1" }, { name: "grandchild2" }]
},
{
name: "child2"
}
]
};
// 遍历树函数,不使用递归
function iterativeTraverse(tree, parentElementId = "") {
let divObj = document.getElementById(parentElementId || "app");
// 遍历当前节点及其子节点
for (let node of tree) {
const newNode = `<div>${node.name}</div>`;
divObj.innerHTML += newNode;
// 如果有子节点继续遍历
if (node.children && node.children.length > 0) {
iterativeTraverse(node.children, newNode.id);
}
}
}
// 调用遍历函数
iterativeTraverse(treeData);
```
这个`iterativeTraverse`函数通过循环方式访问每个节点及其子节点,避免了递归带来的堆栈溢出风险。
阅读全文