一个数组,拿id寻找id等于parentId为子集,组合成为一个树形结构
时间: 2024-02-20 16:59:04 浏览: 56
好的,这是一个常见的树形结构构建问题。您可以使用以下步骤来解决它:
1. 对数组进行排序,按照parentId进行升序排序,这样可以保证后面的节点一定在前面的节点的子节点中。
2. 创建一个字典,将每个节点的id作为键,节点本身作为值,这样可以快速地查找每个节点。
3. 创建一个空的根节点。
4. 遍历排序后的数组,对于每个节点,找到其父节点,并将其添加为父节点的子节点之一。
5. 返回根节点,即可得到组合成的树形结构。
下面是一个Python示例代码,用于演示如何实现这一过程:
```python
def build_tree(arr):
# 对数组进行排序
arr.sort(key=lambda x: x['parentId'])
# 创建字典,将每个节点的id作为键,节点本身作为值
nodes = {node['id']: node for node in arr}
# 创建根节点
root = None
# 遍历数组,构建树形结构
for node in arr:
if node['parentId'] is None:
# 如果该节点没有父节点,则将其作为根节点
root = node
else:
# 否则将其添加为父节点的子节点之一
parent = nodes[node['parentId']]
if 'children' not in parent:
parent['children'] = []
parent['children'].append(node)
# 返回根节点
return root
```
以上代码是一个基本的实现,您可以根据自己的需求进行修改和扩展。
阅读全文