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"
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
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
def splay_search(self, value): node = BSTNode.search(self, value) node.splay() return self # returns root, since node was moved to its place
def splay_search(self, value): node = BSTNode.search(self, value) node.splay() return self # returns root, since node was moved to its place