老师,这里根本没有必要用Map来传递parentId
来源:9-6 -【连环问】把一个树转换为数组

自胜者强123
2022-07-05
这是我的简单方案
let curNode = linkNode.pop()
curNode.parentId = 0
while (curNode) {
const { id, name, parentId } = curNode
res.push({ id, name, parentId })
for (const item of curNode.children) {
item.parentId = curNode.id
linkNode.add(item)
}
curNode = linkNode.pop()
}
第一个元素,默认parentId = 0就可以,遍历children的时候,当前子节点的parentId等于父节点的id就可以了
老师,有时候一些算法和手写代码的题目,看你写的代码,不是那么好理解,在手写代码的课程上面,学习进度非常慢
写回答
2回答
-
宅到深处自然萌
3天前
你这方法会改变原来的对象,我提供一个:
const convertTreeToArr = (root: ITreeNode): IArrayItem[] => { const result = [] const queue = [{ node: root, parentId: 0 }] while(queue.length) { const { node, parentId } = queue.shift() const arrItem: IArrayItem = { id: node.id, name: node.name, parentId } result.push(arrItem) if (node.children) { node.children.forEach((child) => { queue.push({ node: child, parentId: node.id }) }) } } return result }
00 -
双越
2022-07-05
具体哪部分不好理解?
012022-07-05
相似问题