Lakehead University

### Question Description

I’m stuck on a Java question and need an explanation.

First: Implement the class TreapADT including an search, insert, and delete methods.

Then split the tree by adding a SplitTree method.

? The tree splitting problem is this:

? Given a tree and a key value K not in the tree, create two trees: One with keys less than K, and one with keys greater than K

? This is easy to solve with a treap, once the insert operation has been implemented:

? Insert (K, INFINITY) in the treap

? Since this has a higher priority than any node in the heap, it will become the root of the treap after insertion

? Because of the BST ordering property, the left subtree of the root will be a treap with keys less than K, and the right subtree of the root will be a treap with keys greater than K. These subtrees then are the desired result of the split

? Since insert can be done in time O(H) where H is the height of the treap, splitting can also be done in time O(H)

### Unformatted Attachment Preview

Purchase answer to see full attachment

## Final Answer

Here's the complete solution in Java.Note that I've referred ...