在echarts关系图中避免形成闭环

最近开发遇到了一个需求,需要动态添加操作人员,且两个不同的人员可以指定同一个操作人员,最终所有人员都需要汇总到同一个操作人,同时在页面中需要将这些人员全部展示出来,类似于思维导图形式展示人员。

起始由于调研不足,选择了jsmind插件,jsmind插件展示思维导图确实比较好看,以思维导图的形式展示多级操作人员,后发现该组件无法指向同一个节点,且存储的数据格式较为复杂,最终决定放弃该组件,重新寻找更合适的展示方法。

经过多方调研,发现echats关系图应用在需求上很合适,因此选用了echats关系图进行操作人的展示,在添加操作人员的时候要确保不能形成闭环,为了避免添加人员时形成闭环,我在此处引用了深度优先遍历算法避免闭环的形成。

深度优先遍历算法的思想大学的时候都学过,有不记得的可以去下面链接瞧一瞧哈,或者多百度百度,解释的还是很多的
https://blog.csdn.net/basycia/article/details/50766171

在关系图中应用深度优先遍历算法的思想如下:

1.在添加操作人节点时,先根据nodes数组创建临时数组nodes_temp,将本次添加的操作人节点push进入nodes_temp中,edgs也一样,创建edgs_temp,将本次指向push进入edgs_temp中,利用调用以下方法也就是create(nodes_temp,edgs_temp)创建图结构

d1a82b6512f24c58a8d217a5486e2c08.png

 2.创建好图结构后调用以下深度优先遍历方法

966c86b59b2640b590fd3e0e2b48938e.png

每个数据的格式

4cab453be99043358b740b0d26a6cccb.png

3. 最终根据isDAG的值判断是否形成闭环,若无闭环,则执行添加节点操作,反之提示形成闭环,重新选择操作人员

思想就是这么个思想

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值