广度遍历一个数据获取数据的路径

2017-04-13 17:52:09 +08:00
 IJustmaogepao

向各位 v2er 请教一个问题。

现在做项目遇到了这种情况,有一棵树,在树下面的某个节点要插入一个 node ,现在用了一个插件,在插入数据时是这样插入的

 $scope.treedata[1].children.push(node);

现在要插入一个 node ,但是不确定是在哪个节点下插入的。(有可能是$scope.treedata[i].children[j]或$scope.treedata[i].children[j].children[k]等等)

已知要在 id 为“ 111 ”的节点插入 node ,现在我想到的方法时广度遍历,判断 id 是否相等,然后插入,但是有些问题。。

1.广度遍历怎么获取路径?(即$scope.treedata[i].children[j].children[k]中 i,j,k 等)

2.有没有哪位大神想到什么更简单的方法?

1707 次点击
所在节点    问与答
4 条回复
domty
2017-04-13 18:11:32 +08:00
需求就是在一颗树里面进行遍历,当找到某个节点的时候给这个节点插入一个子节点?

这个你对应设计一个栈不可以吗,每遍历到一个节点就把节点信息压入栈里,如果查找失败就压出。最后找到节点后依次弹出栈中的数据,反转下就是从根节点到该点的路径了。
hxndg
2017-04-13 20:51:19 +08:00
为什么要广搜?深搜可以么?
ls 应该是深搜记录路径把。
domty
2017-04-14 10:06:22 +08:00
@hxndg #2
是的
IJustmaogepao
2017-04-14 15:10:36 +08:00
@domty @hxndg 多谢两位提醒~不过已经通过另一个方法解决了。。因为是 js 应用,所以直接给 node 的 children 赋值就好了~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354661

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX