2016-04-07 18 views
0

私はPython 3.5.0でバイナリツリーを作っています。私はそのための挿入関数を作っています。しかし、私は自分自身の内側tree_insertを呼び出すとき、それは私にこのエラーを与える問題のビットに実行している:テスト時Pythonは再帰関数を定義していませんか?

File "D:/MadeUpPath/BinaryTree.py", line 10, in tree_insert

tree_insert(data, self.left)

NameError: name 'tree_insert' is not defined

class BinaryTree(): 
    def __init__(self, data): 
     self.left = None 
     self.right = None 
     self.data = data 

    def tree_insert(self, data): 
     if (data < self.data): 
      if (self.left != None): 
       tree_insert(data, self.left) 
      else: 
       self.left = BinaryTree(data) 
     else: 
      if (self.right != None): 
       tree_insert(data, self.right) 
      else: 
       self.right = BinaryTree(data) 

さらに私は、再帰関数は、単に動作しないことが分かりました。私は確かに次のコードを試みたが、私に同じエラーました:誰もが、それははるかに高く評価されるだろう正しい方向に私を指すことができる場合

def factorial(n): 
    if n == 0: 
     return 1 
    else: 
     return n * factorial(n - 1) 

File "D:/MadeUpPath/BinaryTree.py", line 23, in factorial

return n * factorial(n - 1)

NameError: name 'factorial' is not defined

を:)

答えて

1

tree_insert()instance methodですself.tree_insert()を経由してそれを呼び出す:

class BinaryTree(): 
    def __init__(self, data): 
     self.left = None 
     self.right = None 
     self.data = data 

    def tree_insert(self, data): 
     if (data < self.data): 
      if (self.left != None): 
       self.tree_insert(data, self.left) 
      else: 
       self.left = BinaryTree(data) 
     else: 
      if (self.right != None): 
       self.tree_insert(data, self.right) 
      else: 
       self.right = BinaryTree(data) 
+0

私はいくつかの睡眠を得るために必要があります...ありがとうございました –

関連する問題