树搜索功能
问题描述:
任何节点都可以有任意数量的子节点。要搜索此树是我写的是这样的树搜索功能
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);
}
}
这完全不是那么回事......任何输入?
答
您只能递归搜索具有子级的第一个节点。
您应该重写,去年有条件这样的事情:
if (nodes[i].hasOwnProperty('children')) {
var node = this.Search(key, nodes[i].children);
if(node != null)
return node;
}
您还需要添加的情况下为节点是否未找到 - 在函数的最底部例如,return null
。
答
您似乎缺少一个基本案例。当你遇到一个没有子节点的节点时,会发生什么情况,而且这不是你正在寻找的节点?
答
如果这是Javascript,您的代码this.Search
中的this
可能是什么给你的问题。 this
表示“当前的Function对象”。尝试用Search
代替this.Search
。