本文整理汇总了C++中BinaryNode::getrightChildPtr方法的典型用法代码示例。如果您正苦于以下问题:C++ BinaryNode::getrightChildPtr方法的具体用法?C++ BinaryNode::getrightChildPtr怎么用?C++ BinaryNode::getrightChildPtr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BinaryNode
的用法示例。
在下文中一共展示了BinaryNode::getrightChildPtr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: remove
void BST::remove(int x)
{
/*Couple cases of removing an item
*1. Removing the root
*2. Removing a leaf
*3. Removing something in the middle
*/
//1
if (rootPtr->getItem()==x)
{
BinaryNode* toDelete = rootPtr;
rootPtr = rootPtr->getLeftChildPtr();
BinaryNode* rightChild = rootPtr->getRightChildPtr();
BinaryNode* leftChild = rootPtr->getLeftChildPtr();
delete toDelete;
while (leftChild->getrightChildPtr()!=nullptr)//keeps traversing down
{
leftChild = leftChild->getRightChildPtr();
}
leftChild = leftChild->setRightChildPtr(rightChild);
}
else
{
BinaryNode* parent = search(x, rootPtr, rootPtr);
int dir;
if (parent->getrightChildPtr()==x)
{
BinaryNode* toDelete = parent->getrightChildPtr();
dir =0;
}
else
{
BinaryNode* toDelete = parent->getLeftChildPtr();
dir=1;
}
//Now we encounter our next two cases:
//2. if it's a leaf
if (toDelete->getrightChildPtr==nullptr && toDelete->getLeftChildPtr==nullptr)
{
delete toDelete;
if (dir==0)
{
parent->setRightChildPtr(nullptr);
}
else
{
parent->setLeftChildPtr(nullptr);
}
}
//3. Something in the middle
BinaryNode* leftChild = toDelete->getLeftChildPtr();
BinaryNode* rightChild = toDelete->getRightChildPtr();
}
}