本文整理汇总了C++中BinaryNode::setLeftChildPtr方法的典型用法代码示例。如果您正苦于以下问题:C++ BinaryNode::setLeftChildPtr方法的具体用法?C++ BinaryNode::setLeftChildPtr怎么用?C++ BinaryNode::setLeftChildPtr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BinaryNode
的用法示例。
在下文中一共展示了BinaryNode::setLeftChildPtr方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deleteMin
void BST::deleteMin()
{
if (rootPtr->getLeftChildPtr()==nullptr && rootPtr->getRightChildPtr()!=nullptr)
{
BinaryNode* toDelete = rootPtr-> getRightChildPtr();
rootPtr = rootPtr-> getRightChildPtr();
delete toDelete;
}
else if (rootPtr->getLeftChildPtr()==nullptr)
{
delete rootPtr;
}
else
{
BinaryNode* parent = rootPtr;
BinaryNode* child = rootPtr->getLeftChildPtr();
while (child->getLeftChildPtr()!=nullptr)
{
child = child->getLeftChildPtr();
parent = parent->getLeftChildPtr();
}
delete child;
parent->setLeftChildPtr(nullptr);
}
}
示例2: copyTree
BinaryNode<ItemType>* copyTree(const BinaryNode<ItemType>* treePtr) const {
BinaryNode<ItemType>* newTreePtr = nullptr;
if (treePtr != nullptr) {
newTreePtr = new BinaryNode<ItemType>(treePtr->getItem(), nullptr, nullptr);
newTreePtr->setLeftChildPtr(copyTree(treePtr->getLeftChildPtr()));
newTreePtr->setRightChildPtr(copyTree(treePtr->getRightChildPtr()));
}
return newTreePtr;
}
示例3: leftRotate
BinaryNode<ItemType>* leftRotate(BinaryNode<ItemType>* x) {
BinaryNode<ItemType>* y = x->getRightChildPtr();
BinaryNode<ItemType>* T2 = y->getLeftChildPtr();
y->setLeftChildPtr(x);
x->setRightChildPtr(T2);
x->setHeight(max(height(x->getLeftChildPtr()), height(x->getRightChildPtr()))+1);
y->setHeight(max(height(y->getLeftChildPtr()), height(y->getRightChildPtr()))+1);
return y;
}
示例4:
BinaryNode<ItemType>* BinaryNodeTree<ItemType>::copyTree(const BinaryNode<ItemType>* treePtr) const
{
BinaryNode<ItemType>* newTreePtr = nullptr;
// Copy tree nodes during a preorder traversal
if (treePtr != nullptr)
{
// Copy node
newTreePtr = new BinaryNode<ItemType>(treePtr->getItem(), nullptr, nullptr);
newTreePtr->setLeftChildPtr(copyTree(treePtr->getLeftChildPtr()));
newTreePtr->setRightChildPtr(copyTree(treePtr->getRightChildPtr()));
} // end if
return newTreePtr;
} // end copyTree
示例5: 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();
}
}