【问题标题】:Tree search function树搜索功能
【发布时间】:2010-02-16 02:49:28
【问题描述】:

任何节点都可以有任意数量的子节点。为了搜索这棵树,我写了这样的东西

function Search(key, nodes){

 for (var i = 0; i < nodes.length; i++) {


        if (nodes[i].key == key) {
            return nodes[i];
        }



        if (nodes[i].hasOwnProperty('children')) {
            return this.Search(key, nodes[i].children);
        }


    }

哪个不太好用……有什么意见吗?

【问题讨论】:

    标签: tree-structure tree-search


    【解决方案1】:

    你只递归搜索第一个有子节点的节点。

    你应该把最后一个条件改写成这样:

    if (nodes[i].hasOwnProperty('children')) {
        var node = this.Search(key, nodes[i].children);
        if(node != null)
            return node;
    }
    

    如果找不到节点,您还需要添加一个案例 - 例如,在函数的最底部添加一个 return null

    【讨论】:

      【解决方案2】:

      您似乎缺少基本情况。当您遇到一个没有子节点且不是您要查找的节点时会发生什么?

      【讨论】:

        【解决方案3】:

        如果这是 Javascript,您的代码中的 this this.Search 可能是给您带来问题的原因。 this 表示“当前的 Function 对象”。尝试将 this.Search 替换为 Search

        【讨论】:

          猜你喜欢
          • 2019-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-30
          • 2022-11-15
          • 2020-11-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多