Alright, I'm in the middle of my study on Binary Search Tree (BST) and right now I'm just developing the recrusive method in situations when 1 parent has been removed and the parent has 1 or 2 child and I must promote one of them into the parent position right?
Now I hate asking this kind of question, especially to my professor but, did I get it right?
Code:
private BSTNode promote(BSTNode v_BSTN)
{
if(v_BSTN.isLeaf())
return null;
else
{
if(v_BSTN.hasLeftChild() && v_BSTN.hasRightChild())
{
BSTNode v_Temp;
Comparable v_1 = (Comparable)v_BSTN.getLeftChild().getElement();
if(v_1.compareTo(v_BSTN.getRightChild().getElement()) <= 1)
{
v_BSTN.setElement(v_BSTN.getLeftChild().getElement());
v_BSTN.setLeftChild(promote(v_BSTN.getLeftChild()));
}
else
{
v_BSTN.setElement(v_BSTN.getRightChild().getElement());
v_BSTN.setRightChild(promote(v_BSTN.getRightChild()));
}
}
else if(v_BSTN.hasLeftChild() && !v_BSTN.hasRightChild())
{
v_BSTN.setElement(v_BSTN.getLeftChild().getElement());
v_BSTN.setLeftChild(promote(v_BSTN.getLeftChild()));
}
else
{
v_BSTN.setElement(v_BSTN.getRightChild().getElement());
v_BSTN.setRightChild(promote(v_BSTN.getRightChild()));
}
return v_BSTN;
}
}