64,636
社区成员
发帖
与我相关
我的任务
分享
#ifndef BINARY_H
#define BINARY_H
template <typename Type>
class BinarySearchTree
{
public:
BinarySearchTree();
//BinarySearchTree(const BinarySearchTree&);
//~BinarySearchTree();
const Type& findMin() const;
const Type& findMax() const;
bool contains(const Type&);
void insert(const Type&);
void remove(const Type&);
void outPut();
private:
struct BinaryNode{
Type data;
BinaryNode *right, *left;
BinaryNode(const Type &initElement, BinaryNode *r = 0, BinaryNode *l = 0)
: right(r), left(l), data(initElement){}
};
BinaryNode *root;
bool contains(const Type&, BinaryNode*);
void insert(const Type&, BinaryNode*&);
void remove(const Type&, BinaryNode*&);
BinaryNode* findMin(BinaryNode*) const;
BinaryNode* findMax(BinaryNode*) const;
void InOrder(BinaryNode*) const;
void makeEmpty(BinaryNode *t);
};
//#include "BinarySearchTree.cpp"
#endif
BinaryNode* findMin(BinaryNode*) const;
这个函数template <typename Type>
BinarySearchTree<Type>::BinaryNode* BinarySearchTree<Type>::findMin(BinaryNode* t) const
{
if(t == 0)
return 0;//ERROR
if(t->left == 0)
return t;
else
return findMin(t->left);
}
template <typename Type>
typename BinarySearchTree<Type>::BinaryNode*
BinarySearchTree<Type>::findMin(typename BinarySearchTree<Type>::BinaryNode* t) const
{
if(t == 0)
return 0;//ERROR
if(t->left == 0)
return t;
else
return findMin(t->left);
}