2013-04-27 2 views
1
TreeNode search(int value, TreeNode root) 
{ 

    if(root.data==value) 
    { 
     return root; 
    } 
    else if(root.data < value) 
    { 
     search(value, root.Right); 
    } 
    else if (root.data > value) 
    { 
     search(value, root.Left); 
    } 

    return root; 

} 

BST에서 노드를 검색하려는 경우이 함수가 여러 번 반환된다는 점이 문제입니다. 올바른 노드를 반환하지만 Null을 반환합니다. 내가 그것을 향상 도와주세요.BST에서 재귀 검색

+0

또한 root == null인지 확인하고 null을 반환합니다. 당신이 찾고있는 노드가 없다면 오류가 발생하지 않습니다. –

답변

1

변경

search(value, root.Right); 

return search(value, root.Right); 

(도 root.Left에 대한).

그렇지 않으면 재귀 호출의 반환 값을 무시합니다.

+0

그래서 만약 내가 루트 = 검색 (값, root.Right); , 같은 뜻인가요? –

+0

이 경우에도 마찬가지입니다. –