修改python中的类var

时间:2017-07-07 23:48:32

标签: python python-3.x data-structures avl-tree

我目前正在使用自己的AVL实现,但我可以让rotate函数正常工作,因为我无法修改引用传递的树元素。这是我的节点类:

class Node:

    def __init__(self, label):
        self.label = label
        self.left = None
        self.rigt = None
        self.parent = None
        self.height = 0

    def getLabel(self):
        return self.label

    def setLabel(self, label):
        self.label = label

    def getLeft(self):
        return self.left

    def setLeft(self, left):
        self.left = left
        self.left.setParent(self)
        self.left.setHeight(self.height + 1)

    def getRight(self):
        return self.rigt

    def setRight(self, right):
        self.rigt = right
        self.rigt.setParent(self)
        self.rigt.setHeight(self.height + 1)

    def getParent(self):
        return self.parent

    def setParent(self, parent):
        self.parent = parent
        self.height = (self.parent.getHeight() + 1 if
                        (self.parent is not None) else 0)

    def setHeight(self, height):
        self.height = height

    def getHeight(self):
        return self.height

每次插入后,调用函数重新平衡,如果需要则调用旋转函数。旋转函数称为self.rotate(n),其中n是不平衡节点,函数旋转是

def rotate_right(self, node):
    n = Node(node.getLabel())
    n.setRight(node.getRight())
    n.setLeft(Node(node.getParent))
    node.setParent(n)

但是当我尝试在旋转后打印树时,它保持相同的状态,看起来旋转不起作用,但旋转方法中的快速打印显示它正常工作。

0 个答案:

没有答案