2017-12-06 2 views
-3

関数searchNodeが正しく動作しません。バイナリツリーにある要素を検索すると、TrueではなくNoneが返されます。私はそれがなぜ真であるか偽であるが、決してNoneを返さなければならないので、なぜそれがNoneであるのか分からない。それを修正する方法を教えてもらえますか?バイナリ検索ツリーでPythonを使用して検索機能を実装するにはどうすればよいですか?

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

ありがとうございました!今は正しく動作しています。検索機能でリターンを追加しました –

関連する問題