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

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

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

    向各位 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
    domty
        1
    domty  
       2017-04-13 18:11:32 +08:00
    需求就是在一颗树里面进行遍历,当找到某个节点的时候给这个节点插入一个子节点?

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