我正在为btree算法编写代码。我得到NullPointerException。为什么????请有人帮助我......!
public void insertNonFull(BPlusNode root,BPlusNode parent,String key)
{
int i=0;
BPlusNode child=new BPlusNode();
BPlusNode node=parent;
while(true)
{
i=node.numKeys-1;
if(node.leaf)
{
while(i>=0 && key.compareTo(node.keys[i])<0)
{
node.keys[i+1]=node.keys[i];
i--;
}
node.keys[i+1]=key;
node.numKeys=node.numKeys+1;
}
else
{
while(i>=0 && key.compareTo(node.keys[i])<0)
{
i--;
}
}
i++;
child=node.pointers[i];
if(child!=null && child.numKeys==7)
{
splitChild(root,node,i,child);
if(key.compareTo(node.keys[i])>0)
{
i++;
}
}
node=node.pointers[i];
}
}
答案 0 :(得分:1)
听起来父母是null,或者node.pointers [i]是null(在某些时候)。尝试将其更改为:
node = node.pointers[i];
if(node == null){
break; // or something else
}
编辑:实际上,只需将您的循环更改为while(node != null){