문제
모든 노드에는 자녀가 많을 수 있습니다. 이 나무를 검색하기 위해 나는 이런 것을 썼습니다
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
코드에서 this.Search
아마도 당신에게 문제를주는 것일 것입니다. this
"현재 함수 객체"를 의미합니다. 교체 해보세요 this.Search
그냥 Search
.
제휴하지 않습니다 StackOverflow