from __future__ import print_function from BST import BSTNode,BST import random class SplayTree(BST): """A splay tree. """ def left_rotate(self, x): pass def right_rotate(self, x): pass def splay(self, z): pass def search(self, k): pass def insert(self, z): BST.insert(self, z) self.splay(z) def delete(self, z): pass def main(): splayTree = SplayTree() print("First insert 20 random nodes into an empty tree and print the tree.") for i in range(20): n = random.randint(0, 1000) splayTree.insert(BSTNode(n, splayTree.nil, splayTree.nil, splayTree.nil)) print() splayTree.print() print() print("\nThen insert 80 more random nodes into the tree.") for i in range(80): n = random.randint(0, 1000) splayTree.insert(BSTNode(n, splayTree.nil, splayTree.nil, splayTree.nil)) print("These keys in inorder are: ") splayTree.inorder() print() print("\nNow do 200 searches. ") for i in range(200): n = random.randint(0, 1000) if splayTree.search(n) == splayTree.nil: print(n, " not found") else: print(n, " found") print("\nNow search for & delete some nodes.") for i in range(2000): n = random.randint(0, 1000) z = splayTree.search(n) if z != splayTree.nil: splayTree.delete(z) print("The keys in the trees in inorder are now: ") splayTree.inorder() print() print("\nThe final tree looks like this.") print() splayTree.print() print() if __name__ == "__main__": main()