I am having issues inserting a Treapnode into a treap. It takes in 3 arguments. add(E key, P priority, treapnode x). I have tried many things and keep getting a null pointer exception.
I have tried checking for null cases in both the left and the right tree.
private TreapNode add (E key, P priority, TreapNode x)
throws ElementFoundException {
// For You To Complete
int compare = key.compareTo(x.element());
if (x == null){
return new TreapNode(key, priority);
}
//root is larger than the key
else if (compare == 0) {
throw new ElementFoundException("Element was found, and tree was not changed.");
} else if (compare < 0) {
if (x.left() == null) {
//TreapNode y = new TreapNode(key, priority);
TreapNode y = x.left;
x.left = y.right;
y.right = x;
return y;
} else {
x.left = add(key, priority, x.left());
}
}
//root is smaller than the key
else if (compare > 0) {
if (x.right() == null) {
//TreapNode y = new TreapNode(key, priority);
TreapNode z = x.right;
x.right = z.left;
z.left = x;
return z;
}
}
return x;
}
this is you are doing wrong with
x.right()
. same is the case withx.left()
should be
also, I think this is also a wrong comparison,
int
can't benull
butInteger
class can befor in-depth understanding read this page https://www.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/