private void splitRoot(){
		if (this.root instanceof Leaf){
			Leaf newLeaf= ((Leaf)this.root).split(null);	//splits the root
			Vector<Link> newElement= new Vector<Link>();
			newElement.add(((Leaf)this.root).getLast());
			Vector<Object> newPointers= new Vector<Object>();
			newPointers.add(this.root);
			newPointers.add(newLeaf);
			Junction newRoot= new Junction(newElement, this.T, null, newPointers);	//updates all of the second half's fields
			((Leaf)this.root).setParent(newRoot);
			newLeaf.setParent(newRoot);
			this.root= newRoot;	//makes the newly creates root the only root for this tree
		}
		else {	//if the root is a junction
			Junction newJunction= ((Junction)this.root).split(null);	//splits the root
			Vector<Link> newElement= new Vector<Link>();
			newElement.add(((Junction)this.root).getLast());
			Vector<Object> newPointers= new Vector<Object>();
			newPointers.add(this.root);
			newPointers.add(newJunction);
			Junction newRoot= new Junction(newElement, this.T, null, newPointers);	//updates all of the second half's fields
			for (int i=0; i < newPointers.size(); i++){	//sets the parents for the split junctions
				Object temp= newPointers.elementAt(i);
				if (temp instanceof Leaf){
					Leaf tempLeaf= (Leaf)temp;
					tempLeaf.setParent(newRoot);
				}
				else {
					Junction tempJunction= (Junction)temp;
					tempJunction.setParent(newRoot);
				}
			}
			((Junction)this.root).setParent(newRoot);
			newJunction.setParent(newRoot);
			((Junction)this.root).removeLastElement();
			this.root= newRoot;	//makes the newly creates root the only root for this tree
		}
	}//splitRoot