因此,我正在为数据结构类进行分配,一个问题是为AVLTree创建put(key,value)方法。我知道我必须添加平衡方法,但是现在我只是在实际插入。我希望该函数在您可以创建树并键入newTree.put(key value)并使之起作用的地方工作。现在我有
class node:
def __init__(self, key, value):
self.key = key
self.value = value
self.left = None
self.right = None
self.height = 0
class AVLTreeMap:
def __init__(self, key, value):
self.root = node(key, value)
#inserting new key-value pair, NEED TO ADD BALANCING ABILITY
def put(self, key, value, height=0):
if(key < self.root.key):
if(self.root.left == None):
self.root.left = node(key, value)
self.root.left.height = height+1
else:
self.root = self.root.left
self.put(key, value, height+1)
else:
if(self.root.right == None):
self.root.right = node(key, value)
self.root.right.height = height+1
else:
self.root = self.root.right
self.put(key, value, height+1)
但是,put的递归方面仅折扣了根,并创建了一个只有一个父节点和一个节点作为一个孩子的新树。这是解决此问题的正确方法,还是有更简单的方法?另外,如果我这样做,您如何用这种方法左右递归?