[英]Python Binary Search Tree with key and value
我需要將Binary Search Tree類作為家庭作業來實現,但是我在制作insert函數時遇到了困難。 我已經通過Google進行了很多研究,找到了一些解決方案或解決方案,但其中沒有一個使用鍵和值(主要是值),或者如果他們也使用鍵,它們都有大量的獨立功能,我不允許這樣做。
因此,預先構建的只是:
class Node:
def __init__(self, key, value):
self.key = key
self.value = value
self.left = self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
self.size = 0
def __len__(self):
return self.size
def insert(self, key, value):
pass
def remove(self, key):
pass
def find(self, key):
pass
現在的問題是,如果我想檢查例如該值是小於還是大於當前Node的值以將其放在右邊還是左邊,我會得到諸如“未定義root”或“ root.right”之類的錯誤信息這樣的屬性等...我想這很有意義,因為self.root被聲明為None。
但是,現在如何實際修復它以使插入功能正常工作?
我對此任務有點困惑,因為它使用鍵+值,因此我需要插入綁定到特定鍵的值,並在鍵已經存在的情況下覆蓋其值。
您沒有指定,但是我猜這些鍵的要點是確定樹中是否已經有特定的鍵,如果是,則以O(1)
運行時復雜度替換相關節點的值。
因此,當您插入節點時,首先要檢查字典中的密鑰(您將自己在__init__
初始化一個空字典)。 如果已經存在,則只需要替換該特定鍵的節點值即可。 否則,您將以與任何BST中相同的方式添加新節點,並且還記得更新字典以將鍵映射到其節點。
它是早上5點,所以這可能全錯了,但是這里有:
關鍵是我們排序的依據,值並不有趣
您的插入函數應該看起來像這樣:
def insert(self, key, value):
if self.root = None:
self.root = Node(key,value)
return
#regular binary tree traversal (comparing the key) to find where to insert, lets assume we need to insert on the left
parent.left = Node(key,value)
你能從這里弄清楚還是想要更多方向
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.