[英]Not getting required results in binary search tree(BST) in python
我用C ++制作了二進制樹,並試圖用python制作BST,所以我寫了如下代碼,但是什么也沒顯示! 我不知道發生了什么
class Node:
def __init__(self, value, left=None, right=None):
self.left = left
self.right = right
self.value = value
pass
class Tree:
def __init__(self):
self.root = None
pass
def createNode(self, val):
return Node(val)
def insert(self, value):
self.__insert(self.root, value)
def __insert(self, rootptr, val):
if rootptr is None:
rootptr = self.createNode(val)
return 0
elif val < rootptr.value:
if rootptr.left is not None:
self.__insert(rootptr.left, val)
else:
rootptr.left = self.createNode(val)
elif val > rootptr.value:
if rootptr.right is not None:
self.__insert(rootptr.right, val)
else:
rootptr.right = self.createNode(val)
else:
#TODO: raise exception
print("Duplicate value!")
def traversePreorder(self):
self.__traversePreorder(self.root)
def __traversePreorder(self, rootptr):
if rootptr is None:
return 1
print(rootptr.value)
self.__traversePreorder(rootptr.left)
self.__traversePreorder(rootptr.right)
mytree = Tree()
mytree.insert(1)
mytree.insert(2)
mytree.insert(2)
mytree.insert(4)
mytree.insert(5)
mytree.traversePreorder()
我在這里和那里進行了很多調整,但令我沮喪的是沒有任何效果。任何幫助將不勝感激。謝謝。
您正在嘗試使用C語言中的指針(通過引用調用),而該指針在Python中不起作用。
當第一個元素要插入到新的空樹中時:
mytree.insert(1)
方法insert
被調用。 定義如下:
def insert(self, value):
self.__insert(self.root, value)
根尚未設置,即self.root
為None
。 該None
值傳遞給__insert
為rootptr
def __insert(self, rootptr, val):
if rootptr is None:
rootptr = self.createNode(val) # <== this will not change self.root !!
return 0
但是正如您在附件注釋中看到的那樣,設置rootptr
僅會更改此局部變量。
您可以將變量視為帶有名稱的標簽,並將其綁定到值上。 (來源: 本教程 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.