当前位置: 首页 > 编程笔记 >

JS遍历树层级关系实现原理解析

范麒
2023-03-14
本文向大家介绍JS遍历树层级关系实现原理解析,包括了JS遍历树层级关系实现原理解析的使用技巧和注意事项,需要的朋友参考一下

1.遍历树的层级关系

1)先整理数据

2)找到id和数据的映射关系

3)然后找到父节点的数据,进行存储

代码如下

test() {
   const list = [
    { id: "123", parentId: "", children: [] },
    { id: "124", parentId: "123", children: [] },
    { id: "125", parentId: "124", children: [] },
    { id: "126", parentId: "125", children: [] },
    { id: "127", parentId: "126", children: [] }
   ];
   const mapList = [];
   const tree = [];
   list.forEach(item => {
    
    mapList[item.id] = item;
   });
   list.forEach(item => {
    const parentNode = mapList[item.parentId];
    if (!parentNode) {

       if (!item.children) {
         item.children = []
       }

     tree.push(item);
    } else {

      if (!parentNode.children) {
        parentNode.children = []
      }

     parentNode.children.push(item);
    }
   });
   console.log("tree", tree);
  },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 主要内容:层次遍历的实现过程,实现代码前边介绍了 二叉树的先序、中序和后序的遍历算法,运用了 栈的 数据结构,主要思想就是按照先左子树后右子树的顺序依次遍历树中各个结点。 本节介绍另外一种遍历方式:按照二叉树中的层次从左到右依次遍历每层中的结点。具体的实现思路是:通过使用 队列的数据结构,从树的根结点开始,依次将其左孩子和右孩子入队。而后每次队列中一个结点出队,都将其左孩子和右孩子入队,直到树中所有结点都出队,出队结点的先后顺序就是层

  • 我正在尝试实现一个levelOrder函数,它接受树的指针并逐级打印树的数据。这是《C如何编程》一书中的一个问题,完整问题如下: (级序二叉树遍历)Fig的程序。12.19说明了遍历二叉树的三种递归方法——顺序遍历、前序遍历和后序遍历。此练习演示了二叉树的级别顺序遍历,其中节点值从根节点级别开始逐级打印。每个级别上的节点从左到右打印。级序遍历不是递归算法。它使用队列数据结构来控制节点的输出。算法如

  • 这是一个leetcode问题。 给定一个二叉树,返回其节点值的级序遍历(即从左到右,逐级)。 例如:给定二叉树, 将其级别顺序遍历返回为: 但我正在用JavaScript尝试一种新的方式,而不是完全按照他们的解决方案。到目前为止,我能够打印阵列,但 如何在新行中打印不同的级别 以下是我目前的代码: 输入:[3,9,20,空,空,15,7], LeetCode问题链接:BinarytreeTrave

  • 本文向大家介绍js遍历map javaScript遍历map的简单实现,包括了js遍历map javaScript遍历map的简单实现的使用技巧和注意事项,需要的朋友参考一下 js遍历map javaScript遍历map的简单实现 这样会把map给遍历掉,显示在浏览器上的控制器里。 以上这篇js遍历map javaScript遍历map的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参

  • 本文向大家介绍请你实现二叉树的层序遍历并输出相关面试题,主要包含被问及请你实现二叉树的层序遍历并输出时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 主要内容:src/runoob/binary/LevelTraverse.java 文件代码:二分搜索树的层序遍历,即逐层进行遍历,即将每层的节点存在队列当中,然后进行出队(取出节点)和入队(存入下一层的节点)的操作,以此达到遍历的目的。 通过引入一个队列来支撑层序遍历: 如果根节点为空,无可遍历; 如果根节点不为空: 先将根节点入队; 只要队列不为空: 出队队首节点,并遍历; 如果队首节点有左孩子,将左孩子入队; 如果队首节点有右孩子,将右孩子入队; 下面依次演示如下步骤: (1)先取出