示例#1
0
    def test_search(self):
        node = BSTNode(STestClass("A", "a"))
        node.add(STestClass("G", "g"))
        node.add(STestClass("H", "h"))
        node.add(STestClass("B", "b"))
        node.add(STestClass("Z", "z"))

        search_item = node.search_node(STestClass("C", "c"))
        assert search_item is None

        search_item = node.search(STestClass("H", "h"))
        assert search_item.full_str() == "H: h"
示例#2
0
    def delete(self, value):
        # splay node to be deleted
        node = BSTNode.search(self, value)

        node.splay()

        # separate the left subtree, splay its successor to top
        node.left.parent = None
        node.left.successor().splay()
        
        # replace left subtree root with root
        node.value = node.left.value
        node.left = node.left.left
        # You don't have to replace the right child pointer: the sucessor  
        # has no right child

        if node.left: node.left.parent = node
        if node.right: node.right.parent = node
示例#3
0
    def delete(self, value):
        # splay node to be deleted
        node = BSTNode.search(self, value)

        node.splay()

        # separate the left subtree, splay its successor to top
        node.left.parent = None
        node.left.successor().splay()

        # replace left subtree root with root
        node.value = node.left.value
        node.left = node.left.left
        # You don't have to replace the right child pointer: the sucessor
        # has no right child

        if node.left: node.left.parent = node
        if node.right: node.right.parent = node
示例#4
0
    def splay_search(self, value):
        node = BSTNode.search(self, value)

        node.splay()

        return self # returns root, since node was moved to its place
示例#5
0
    def splay_search(self, value):
        node = BSTNode.search(self, value)

        node.splay()

        return self  # returns root, since node was moved to its place