有一个需求,小弟算法能力不强,不知道怎么实现
有一批平铺的数据,每个数据有 parentId ,Id ,type 等属性;按 node.parentId=parentNode.id 构建完之后是一棵树,然后统一挂在一个虚拟的根节点,也即真实数据是一级节点的 array
以上步骤都没有问题,难点在下面:
按数据的 type 进行分类,每个分类建立一个虚拟的树节点,统一挂在一个虚拟的根节点下;
type 的虚拟节点下的真实数据,也需要按父子关系把树构建出来,并且当前节点在树上到根节点也连带出来(向上时,如果节点数据不属于此 type ,也需要展示,此时加一个 readonly 标记)
我思考了如下方案:
( 1 )先把平铺的数据分类,每个分类下的 array 的每个元素进行构建树,但是如果两个节点(有如下可能:深度一样 /不一样;有 /没有父子关系)都在树的某个分支下,可能会构建出 2 棵树,且不好判断
( 2 )先构建树,然后提取符合特征的节点
这个问题把小弟难住了啊,不管怎么处理好像都不对
有一批平铺的数据,每个数据有 parentId ,Id ,type 等属性;按 node.parentId=parentNode.id 构建完之后是一棵树,然后统一挂在一个虚拟的根节点,也即真实数据是一级节点的 array
以上步骤都没有问题,难点在下面:
按数据的 type 进行分类,每个分类建立一个虚拟的树节点,统一挂在一个虚拟的根节点下;
type 的虚拟节点下的真实数据,也需要按父子关系把树构建出来,并且当前节点在树上到根节点也连带出来(向上时,如果节点数据不属于此 type ,也需要展示,此时加一个 readonly 标记)
我思考了如下方案:
( 1 )先把平铺的数据分类,每个分类下的 array 的每个元素进行构建树,但是如果两个节点(有如下可能:深度一样 /不一样;有 /没有父子关系)都在树的某个分支下,可能会构建出 2 棵树,且不好判断
( 2 )先构建树,然后提取符合特征的节点
这个问题把小弟难住了啊,不管怎么处理好像都不对