JavaScript如何使用for循环动态创建深度为10的嵌套树结构
问题描述
你当前使用的通用Tree类提供如下能力:
- 实例化方式:
myTree = new Tree(节点名称字符串) - 实例方法:
appendChildNode(node)、createChildNode(节点名称字符串)、myTree.print() - 实例属性:
myTree.name、myTree.children
目前你可以通过手动链式调用创建深度为10的树,代码如下:
// 初始化树实例 myTree = new Tree('Diagrams') // 手动链式添加节点 myTree.createChildNode('A1').createChildNode('A2').createChildNode('A3').createChildNode('A4').createChildNode('A5').createChildNode('A6').createChildNode('A7').createChildNode('A8').createChildNode('A9').createChildNode('A10') myTree.print()
你需要通过for循环编程实现完全相同的效果,最终打印出的深度10树结构预期如下:
Diagrams A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
实现方案
核心思路是用临时变量存储每次新创建的节点引用,循环时始终在当前最新节点上创建下一级子节点,完全复现链式调用的执行逻辑,代码如下:
// 初始化根节点 const myTree = new Tree('Diagrams') // 临时变量初始指向根节点,用于跟踪当前要添加子节点的位置 let currentNode = myTree // 循环创建A1到A10共10层节点 for (let i = 1; i <= 10; i++) { // 在当前节点下创建子节点,同时将临时变量更新为新创建的子节点,供下一轮循环使用 currentNode = currentNode.createChildNode(`A${i}`) } // 打印验证结果 myTree.print()
逻辑说明:
createChildNode方法调用后会返回新创建的子节点实例,手动链式调用就是不断在返回的新节点上继续调用创建方法。循环实现时用临时变量接住每次返回的新节点,执行效果和手动链式调用完全一致,生成的树结构没有任何差异。
内容的提问来源于stack exchange,提问作者A.T.
相关产品推荐
相关产品推荐

