private BTNode deleteElement(int a,BTNode curNode)
{
BTNode s,q,p;
if (curNode==null)
return curNode;
HasId curObject =(HasId)curNode.getInfo();
if (a>curObject.getId())
{
curNode=deleteElement(a,curNode.getRight());
return curNode;
}
else if (a<curObject.getId())
{
curNode=deleteElement(a,curNode.getLeft());
return curNode;
}
else
{
q=curNode;
s=curNode;
if (q.getRight()==null)
curNode=q.getLeft();
else if (q.getLeft()==null)
curNode=q.getRight();
else{
p=q.getRight();
while (p.getLeft()!=null)
{
s=p;
p=p.getLeft();
}
curNode=p;
curNode.setLeft(q.getLeft());
s.setLeft(p.getRight());
if (q.getLeft()==p)
curNode.setRight(q.getRight());
else
curNode.setRight(p.getRight());
}
return curNode;
}
}
public void delete(int a)
{
deleteElement(a,root);
}دالة الحذف من binary search tree ..
مغلق
هذا الموضوع مغلق.