searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

数组转树形结构学习记录

2023-07-10 03:46:11
6
0

要将一个数组转换为树形结构,需要确定数组中元素之间的父子关系。常见的方法是使用哈希表来记录每个节点的索引和父节点的索引。然后,通过递归地构建树,将每个节点与其父节点连接起来。

下面是一个示例代码,演示如何将数组转换为树形结构:

```javascript
class TreeNode {
  constructor(value) {
    this.value = value;
    this.children = [];
  }

  addChild(child) {
    this.children.push(child);
  }
}

function arrayToTree(arr) {
  const nodeMap = {}; // 哈希表,用于存储节点的索引和对应的节点对象

  // 创建所有节点并存储到哈希表中
  for (let i = 0; i < arr.length; i++) {
    nodeMap[i] = new TreeNode(arr[i]);
  }

  let root = null; // 根节点

  // 构建树的结构
  for (let i = 0; i < arr.length; i++) {
    const parentIndex = arr[i]; // 数组值表示当前节点的父节点索引
    if (parentIndex === -1) {
      // 如果父节点索引为 -1,表示当前节点为根节点
      root = nodeMap[i];
    } else {
      // 否则,将当前节点添加到其父节点的子节点列表中
      const parentNode = nodeMap[parentIndex];
      parentNode.addChild(nodeMap[i]);
    }
  }

  return root; // 返回根节点
}
```

通过调用 `arrayToTree` 函数,并传入数组作为参数,即可获得对应的树形结构的根节点。

该代码假设数组中的每个元素都是有效的节点索引(0 到 n-1)。如果数组中的元素不是连续的或存在无效的索引,需要根据实际情况进行适当的处理。

0条评论
作者已关闭评论
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
原创

数组转树形结构学习记录

2023-07-10 03:46:11
6
0

要将一个数组转换为树形结构,需要确定数组中元素之间的父子关系。常见的方法是使用哈希表来记录每个节点的索引和父节点的索引。然后,通过递归地构建树,将每个节点与其父节点连接起来。

下面是一个示例代码,演示如何将数组转换为树形结构:

```javascript
class TreeNode {
  constructor(value) {
    this.value = value;
    this.children = [];
  }

  addChild(child) {
    this.children.push(child);
  }
}

function arrayToTree(arr) {
  const nodeMap = {}; // 哈希表,用于存储节点的索引和对应的节点对象

  // 创建所有节点并存储到哈希表中
  for (let i = 0; i < arr.length; i++) {
    nodeMap[i] = new TreeNode(arr[i]);
  }

  let root = null; // 根节点

  // 构建树的结构
  for (let i = 0; i < arr.length; i++) {
    const parentIndex = arr[i]; // 数组值表示当前节点的父节点索引
    if (parentIndex === -1) {
      // 如果父节点索引为 -1,表示当前节点为根节点
      root = nodeMap[i];
    } else {
      // 否则,将当前节点添加到其父节点的子节点列表中
      const parentNode = nodeMap[parentIndex];
      parentNode.addChild(nodeMap[i]);
    }
  }

  return root; // 返回根节点
}
```

通过调用 `arrayToTree` 函数,并传入数组作为参数,即可获得对应的树形结构的根节点。

该代码假设数组中的每个元素都是有效的节点索引(0 到 n-1)。如果数组中的元素不是连续的或存在无效的索引,需要根据实际情况进行适当的处理。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0