2017-12-06 4 views
-3

searchNode 함수가 올바로 작동하지 않습니다. 이진 트리에있는 요소를 검색 할 때 True 대신 None을 반환합니다. True 또는 False 중 하나를 반환해야하므로 None이 아닌 이유를 이해할 수 없습니다. 그것을 고칠 수있는 방법을 알려주실 수 있습니까?파이썬을 사용하여 바이너리 검색 트리에서 검색 기능을 어떻게 구현합니까?

class Node: 
def __init__(self, value): 
    self.value = value 
    self.left = None 
    self.right = None 

class BinarySearchTree: 
def __init__(self): 
    self.root = None 
    self.visited = 0 

def insert(self,value): 
    if self.root is None: 
     self.root = Node(value) 
    else: 
     self.insertNode(self.root, value) 

def insertNode(self,current, value): 
    if value <= current.value: 
     if current.left: 
      self.insertNode(current.left, value) 
     else: 
      current.left = Node(value) 
    else: 
     if current.right: 
      self.insertNode(current.right, value) 
     else: 
      current.right = Node(value) 

def fromArray(self, newarr): 
    for each in newarr: 
     self.insert(each) 
    return 

def search(self, value): 
    self.visited = 0 
    self.searchNode(self.root, value) 

def searchNode(self,current,value): 
    if (current is None): 
     return False 
    elif (value == current.value): 
     return True 
    elif (value < current.value): 
     self.visited += 1 
     return self.searchNode(current.left, value) 
    else: 
     self.visited += 1 
     return self.searchNode(current.right, value) 
+0

이 메서드를 호출하고 결과를 평가하는 방법은 무엇입니까? –

+0

스크린 샷 대신 코드를 붙여 넣습니다. – gonczor

+0

게시물에 들여 쓰기 코드를 복사하여 복사하십시오. –

답변

0

search에는 아무 것도 반환하지 않습니다. 방금 호출하는 대신 return self.searchNode(self.root, value)을 원할 수도 있습니다.

+0

고맙습니다! 지금 올바르게 작동하고 있습니다. 검색 기능에서 수익을 추가했습니다. –

관련 문제