trees and external storage listing continued curnode getnextchild(curnodekey)/end while //insert dataitem public void insert(long dvaluenode curnode rootdataitem tempitem new dataitem(dvalue)while(trueifcurnode isfull(split(curnode)curnode curnode getparent()/if node full/split it /back up /search once curnode getnextchild(curnodedvalue)/end if(node is fullelse ifcurnode isleaf(/if node is leafbreak/go insert /node is not fullnot leafso go to lower level else curnode getnextchild(curnodedvalue)/end while curnode insertitem(tempitem)/insert new dataitem /end insert(/public void split(node thisnode/split the node /assumes node is full dataitem itembitemcnode parentchild child int itemindexitemc thisnode removeitem()/remove items from itemb thisnode removeitem()/this node child thisnode disconnectchild( )/remove children child thisnode disconnectchild( )/from this node