Question
please complete the todo: ~~~~~~~~~~~~~~~~~~~ private Node put(Node n, int item) { /* * First check if n contains item. If it does, there is
please complete the todo:
~~~~~~~~~~~~~~~~~~~
private Node put(Node n, int item) {
/*
* First check if n contains item. If it does, there is nothing to do and we can
* return the root of this subtree unchanged
*/
int itemCount = n.nodeType - 1;
for (int i = 0; i < itemCount; i++) {
if (n.items[i] == item)
return n;
}
/*
* Because we always insert into a pre-existing leaf, the base case here is a
* tree with one node (the root is a leaf).
*/
if (n.isLeaf()) {
// If the node is a 2-node, insert the new item to its left or right.
if (n.nodeType == 2) {
if (item < n.items[0]) {
n.items[1] = n.items[0];
n.items[0] = item;
} else {
n.items[1] = item;
}
n.nodeType = 3;
}
else if (n.nodeType == 3) {
// TODO
// Turn this into a 4-node and return it since you are allowed
// to temporarily have a 4-node as a the root.
throw new RuntimeException("Implement me");
}
else
throw new RuntimeException("ERROR: " + n.nodeType + "-node found while inserting");
return n;
}
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started