57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
template <class T>
|
|
T *BTree<T>::searchNode(TreeNode<T> *lpRootNode,const T &someItem)
|
|
{
|
|
if(!lpRootNode)return 0;
|
|
while(!(someItem==lpRootNode->item()))
|
|
{
|
|
if(someItem<lpRootNode->item())lpRootNode=lpRootNode->leftNode();
|
|
else lpRootNode=lpRootNode->rightNode();
|
|
}
|
|
return &lpRootNode->item();
|
|
}
|
|
template <class T>
|
|
T *BTree<T>::searchNode(TreeNode<T> *lpRootNode,const T &someItem)
|
|
{
|
|
if(!lpRootNode)return 0;
|
|
while(!(someItem==lpRootNode->item()))
|
|
{
|
|
if(someItem<lpRootNode->item())lpRootNode=lpRootNode->leftNode();
|
|
else lpRootNode=lpRootNode->rightNode();
|
|
}
|
|
return &lpRootNode->item();
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
template <class T>
|
|
void BTree<T>::remove(const T &someItem,TreeNode<T> *pRootNode)
|
|
{
|
|
TreeNode<T> *pTmpNode;
|
|
if(!pRootNode)return;
|
|
if(someItem<pRootNode->item())remove(someItem,pRootNode->leftNode());
|
|
else if(someItem>pRootNode->item())remove(someItem,pRootNode->rightNode());
|
|
else
|
|
{
|
|
pTmpNode=pRootNode;
|
|
if(!pTmpNode->rightNode())pRootNode=pTmpNode->leftNode();
|
|
else if(!pTmpNode->leftNode())pRootNode=pTmpNode->rightNode();
|
|
else
|
|
{
|
|
TreeNode<T> *pLeftNode=pTmpNode->leftNode();
|
|
while(pLeftNode->rightNode())pLeftNode=pLeftNode->rightNode();
|
|
pTmpNode=pLeftNode;
|
|
pLeftNode=pLeftNode->leftNode();
|
|
}
|
|
if(mlpRootNode==pTmpNode)mlpRootNode=pRootNode;
|
|
delete pTmpNode;
|
|
leaves(leaves()-1);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
// ptrNode=operator[](0);
|
|
// Block<SmartPointer<TreeNode<T> > >::remove(int(0));
|