def test_delete_node(self): bst = BST() bst.insert_node(50, "node50") bst.insert_node(30, "node30") bst.insert_node(20, "node20") bst.insert_node(40, "node40") bst.insert_node(70, "node70") bst.insert_node(60, "node60") bst.insert_node(80, "node80") smallest = bst.smallest() self.assertTrue(smallest == 20) logging.debug("BST root: %s" % str(bst.to_list())) bst.delete_node(30) logging.debug("BST root: %s" % str(bst.to_list())) self.assertTrue(bst.root.left.value == 40) self.assertTrue(bst.root.left.left.value == 20) logging.debug("BST root: %s" % str(bst.to_list())) bst.delete_node(100) bst.delete_node(70) logging.debug("BST root: %s" % str(bst.to_list())) self.assertTrue(bst.root.right.value == 80) self.assertTrue(bst.root.right.left.value == 60) bst.delete_node(50) logging.debug("BST root: %s" % str(bst.to_list())) self.assertTrue(bst.root.value == 60) self.assertTrue(bst.root.left.value == 40) self.assertTrue(bst.root.right.value == 80)
def build_bst1(self) -> BST: bst = BST() bst.insert_node(5, "root") bst.insert_node(1, "node1") bst.insert_node(2, "node2") bst.insert_node(7, "node7") bst.insert_node(6, "node6") bst.insert_node(10, "node10") self.assertTrue(bst.root.value == 5) self.assertTrue(bst.root.left.value == 1) self.assertTrue(bst.root.left.right.value == 2) self.assertTrue(bst.root.right.value == 7) self.assertTrue(bst.root.right.left.value == 6) self.assertTrue(bst.root.right.right.value == 10) return bst
def build_bst0(self) -> BST: bst = BST() bst.insert_node(0, "root") bst.insert_node(1, "node1") bst.insert_node(2, "node2") bst.insert_node(3, "node3") self.assertTrue(bst.root.right.value == 1) self.assertTrue(bst.root.left == None) self.assertTrue(bst.root.right.right.value == 2) self.assertTrue(bst.root.right.left == None) self.assertTrue(bst.root.right.right.right.value == 3) self.assertTrue(bst.root.right.right.right.left == None) self.assertTrue(bst.root.right.right.right.right == None) return bst