## B-Tree to B+ Tree

I've just started learning about BTrees and B+ Trees and I'm a little lost. I have 3 classes that implement the insert method for BTrees. BTreeNode, BTree, and BTreeTest. What I want to know is that besides changing the number of keys for the internal nodes from 2T-1 to M-1, and the children from 2T to M, number of keys for the leafs from 2T-1 to L, and the number of children from 2T to M, how else would I need to change my code in order for it to work for B+ Trees. On my BTreeNode class I have the insert method and on the BTree class I have it to where it checks if you have to split the root before inserting a new key. The duplicate method just makes sure there's no duplicates.
These are my methods:

```public class BTreeNode{
public int[] key;
public BTreeNode[] c;
boolean isLeaf;
public int[] nextLeaf;
public int n;
private int T; //Each node has at least T-1 and at most 2T-1 keys
public int min;
public int max;

public  BTreeNode(int t){
T = t;
isLeaf = true;
key = new int[2*T-1];
c = new BTreeNode[2*T];
n = 0;
}
public void insert(int newKey){
// Insert new key to current node
// Make sure that the current node is not full by checking and
// splitting if necessary before descending to node

if(duplicate(newKey) == false){
int i = n-1;
if(isLeaf){
while((i >= 0) && (newKey < key[i])) {
key[i+1] = key[i];
i--;
}
n++;
key[i + 1] = newKey;
}
else{
while ((i >= 0) && (newKey < key[i])) {
i--;
}
int insertChild = i + 1;  // Subtree where new key must be inserted
if(c[insertChild].isFull()){
// The root of the subtree where new key will be inserted has to be split
// update keys and references accordingly

n++;
c[n] = c[n-1];
for(int j = n - 1; j > insertChild; j--){
c[j] = c[j-1];
key[j] = key[j-1];
}
key[insertChild] = c[insertChild].key[T - 1];
c[insertChild].n = T - 1;

BTreeNode newNode = new BTreeNode(T);
for(int k = 0; k < T - 1; k++){
newNode.c[k] = c[insertChild].c[k + T];
newNode.key[k] = c[insertChild].key[k + T];
}

newNode.c[T - 1] = c[insertChild].c[2*T-1];
newNode.n = T-1;
newNode.isLeaf = c[insertChild].isLeaf;
c[insertChild+1] = newNode;

if(newKey < key[insertChild]){
c[insertChild].insert(newKey);

}
else{
c[insertChild + 1].insert(newKey);

}
}
else
c[insertChild].insert(newKey);

}
}
else return;
}
}

public class BTree{
private BTreeNode root;
private int T; //2T is the maximum number of children a node can have
private int height;
private int firstLeaf;

public void insert(int newKey){
if (root.isFull()){//Split root;
split();
height++;
}
root.insert(newKey);
}
}```

Any help would be appreciated. Thanks in advance.