2014-11-15 3 views
2

노드를 이진 검색 트리에 삽입하는 함수를 작성하려고합니다. 몇 가지 예를 보았고 내 알고리즘이 작동해야한다고 생각하지만 어떤 이유로 테스트에 실패했습니다.이진 검색 트리에 대한 삽입 알고리즘이 작동하지 않습니다.

def insert(tr, el): 
 
    """ function to insert an element into a binary search tree 
 
    following the rules of binary search trees. 
 
    
 
    return: an updated tree 
 
    precondition: assumed all elements unique 
 
    """ 
 

 
    if tr == None: 
 
     return createEyecuBST(el, None) 
 
    elif el < tr.value: 
 
     if tr.left == None: 
 
      tr.left = createEyecuBST(el, tr) 
 
      return tr 
 
     else: return insert(tr.left, el) 
 
    elif el > tr.value: 
 
     if tr.right == None: 
 
      tr.right = createEyecuBST(el, tr) 
 
      return tr 
 
     else: return insert(tr.right, el) 
 
    return None

+0

빈 함수 본문을 사용하려고합니까, 아니면이 서식 오류입니까? – Tritium21

+0

@ Tritium21 미안하지만, 당신이 의미하는 바를 이해하지 못합니다. 삽입 기능 안에 무엇이 있는지 볼 수 없다는 말입니까? – Stalfurion

+0

게시 된 코드에는 함수 본문에 아무 것도 없습니다. 그 들여 쓰기가 없습니다. – Tritium21

답변

1

코드에 문제가 표시 두 줄이 있습니다 그 경우

else: return insert(tr.left, el) 

else: return insert(tr.right, el) 

중 하나 (하위 트리를 반환 함수 왼쪽 또는 오른쪽) tr 함수를 업데이트 된 tr 트리 반환하려면 원하는. 이 줄을 다음으로 바꿔야한다고 생각합니다.

else: 
    insert(tr.left, el) 
    return tr 

tr.right에 대해서도 마찬가지입니다.

+0

고맙다. 그것은 효과가있는 것 같습니다. – Stalfurion

관련 문제