문제

모든 노드에는 자녀가 많을 수 있습니다. 이 나무를 검색하기 위해 나는 이런 것을 썼습니다

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top