tree.put(key,value)插入

时间:2019-03-16 16:59:08

标签: python recursion key-value avl-tree insertion

因此,我正在为数据结构类进行分配,一个问题是为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的递归方面仅折扣了根,并创建了一个只有一个父节点和一个节点作为一个孩子的新树。这是解决此问题的正确方法,还是有更简单的方法?另外,如果我这样做,您如何用这种方法左右递归?

0 个答案:

没有答案