首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   IJustmaogepao · 2017-04-13 17:52:09 +08:00 · 965 次点击
    这是一个创建于 917 天前的主题,其中的信息可能已经有所发展或是发生改变。

    向各位 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.有没有哪位大神想到什么更简单的方法?

    4 回复  |  直到 2017-04-14 15:10:36 +08:00
        1
    domty   2017-04-13 18:11:32 +08:00
    需求就是在一颗树里面进行遍历,当找到某个节点的时候给这个节点插入一个子节点?

    这个你对应设计一个栈不可以吗,每遍历到一个节点就把节点信息压入栈里,如果查找失败就压出。最后找到节点后依次弹出栈中的数据,反转下就是从根节点到该点的路径了。
        2
    hxndg   2017-04-13 20:51:19 +08:00
    为什么要广搜?深搜可以么?
    ls 应该是深搜记录路径把。
        3
    domty   2017-04-14 10:06:22 +08:00
    @hxndg #2
    是的
        4
    IJustmaogepao   2017-04-14 15:10:36 +08:00
    @domty @hxndg 多谢两位提醒~不过已经通过另一个方法解决了。。因为是 js 应用,所以直接给 node 的 children 赋值就好了~
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1033 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 22:40 · PVG 06:40 · LAX 15:40 · JFK 18:40
    ♥ Do have faith in what you're doing.