template T *BTree::searchNode(TreeNode *lpRootNode,const T &someItem) { if(!lpRootNode)return 0; while(!(someItem==lpRootNode->item())) { if(someItemitem())lpRootNode=lpRootNode->leftNode(); else lpRootNode=lpRootNode->rightNode(); } return &lpRootNode->item(); } template T *BTree::searchNode(TreeNode *lpRootNode,const T &someItem) { if(!lpRootNode)return 0; while(!(someItem==lpRootNode->item())) { if(someItemitem())lpRootNode=lpRootNode->leftNode(); else lpRootNode=lpRootNode->rightNode(); } return &lpRootNode->item(); } #if 0 template void BTree::remove(const T &someItem,TreeNode *pRootNode) { TreeNode *pTmpNode; if(!pRootNode)return; if(someItemitem())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 *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 > >::remove(int(0));