树形结构转化成平铺结构深度优先遍历js
时间: 2024-06-07 09:03:46 浏览: 108
树的深度优先遍历与广度优先遍历
树形结构转化成平铺结构深度优先遍历是指将树形结构的数据展开为一个扁平化的数组,同时保留节点之间的层级关系。这个过程通常可以使用深度优先遍历算法来实现。
以下是一个使用 JavaScript 实现树形结构转化成平铺结构深度优先遍历的示例代码:
```
function flattenTree(tree, level = 0) {
const result = [];
if (!tree) {
return result;
}
const { id, name, children } = tree;
result.push({
id,
name,
level,
});
if (children && children.length > 0) {
children.forEach(child => {
const childResult = flattenTree(child, level + 1);
result.push(...childResult);
});
}
return result;
}
```
其中,`tree` 参数表示树形结构的根节点,`level` 参数表示当前节点所处的层级。函数会递归遍历每个节点,并将它们展开为一个扁平化的数组,同时记录每个节点所处的层级。
使用示例如下:
```
const tree = {
id: 1,
name: 'A',
children: [
{
id: 2,
name: 'B',
children: [
{
id: 3,
name: 'C',
children: null,
},
{
id: 4,
name: 'D',
children: null,
},
],
},
{
id: 5,
name: 'E',
children: [
{
id: 6,
name: 'F',
children: null,
},
{
id: 7,
name: 'G',
children: null,
},
],
},
],
};
const result = flattenTree(tree);
console.log(result);
```
输出结果为:
```
[
{ id: 1, name: 'A', level: 0 },
{ id: 2, name: 'B', level: 1 },
{ id: 3, name: 'C', level: 2 },
{ id: 4, name: 'D', level: 2 },
{ id: 5, name: 'E', level: 1 },
{ id: 6, name: 'F', level: 2 },
{ id: 7, name: 'G', level: 2 }
]
```
阅读全文