出於某種原因,我似乎無法得到「查找」方法的工作。我認爲它與一個範圍問題有關...... root.val似乎並沒有全局更新。我得到一個錯誤消息說AtributeError:「詮釋」對象有沒有屬性「VAL」 這裏是我的代碼的時刻:蟒蛇二叉搜索樹
class BinaryNode:
def __init__(self, v):
self.val = v
self.leftChild = None
self.rightChild = None
def get(self):
return self.val
def set(self, v):
self.val = v
def getChildren(self):
children = []
if self.leftChild != None:
children.append(self.leftChild)
if self.rightChild != None:
children.append(self.rightChild)
return children
class Tree:
def __init__(self):
self.root = None
def setRoot(self, node):
self.root = node
def size(self):
if self.root == None:
return 0
def subtreeSize(node):
return 1 + sum(subtreeSize(c) for c in node.getChildren())
return subtreeSize(self.root)
class BinarySearchTree(Tree):
def insert(self, val):
self.insertNode(self.root, val)
def insertNode(self, node, val):
if node is None:
self.setRoot(BinaryNode(val))
elif val <= node.val:
node.leftChild = insertNode(BinaryNode(val), val)
elif val > node.val:
node.rightChild = insertNode(BinaryNode(val), val)
else:
node.val = val
def find(self, val):
self.findNode(self.root, val)
def findNode(self, node, val):
if node is None:
return False
elif val == node.val:
return True
elif val < node.val:
self.findNode(val, node.leftChild)
else:
self.findNode(val, node.rightChild)
if __name__ == "__main__":
btree = BinarySearchTree()
vals = [5]
for v in vals:
btree.insert(v)
tests = [8, 5]
for t in tests:
print "find(%i) = %s" % (t, ("True" if btree.find(t) else "False"))
你爲什麼要刪除問題並拒絕他人提供的幫助? – Gareth
請不要*刪除問題。您在CC維基許可證下發布了此內容(請參閱頁面右下方),您的問題旨在幫助未來的其他人*。 –
如果你覺得你發佈了這個錯誤(不想讓你的教授發現?),那麼你需要[請求解除關聯的帖子](http://meta.stackexchange.com/questions/96732/how -DO-I-刪除,我的名,從-A-後在-按照與 - ccwiki)。不要簡單地破壞它並否認那些幫助你聲譽和認可的人。 –