//1、一个节点的ADL
#ifndef NODE_H_
#define NODE_H_
#include<cstdlib>
template <typename E>
class BinNode{
public:
virtual ~BinNode(){
}
virtual E& element() =0;
virtual void setElement(const E&) =0;
virtual BinNode* left() const =0;
virtual void setLeft(BinNode *) =0;
virtual BinNode* right() const =0;
virtual void setRight(BinNode *) =0;
virtual bool isLeaf() =0;
};
#endif
//2、字典的ADL:
#ifndef DICTIONARY_H_
#define DICTIONARY_H_
template<typename key ,typename E>
class Dictionary{
private:
void operator =(const Dictionary&){
}
Dictionary(const Dictionary&){
}
public:
Dictionary(){
}
virtual ~Dictionary(){
}
virtual void clear() =0;
virtual void insert(const key& k, const E& e) =0;
virtual E remove (const key & k) =0;
virtual E removeAny() =0;
virtual E find(const key & k) const =0;
virtual int size() =0;
};
#endif
//3、一个带权的节点(继承普通节点)
#include"node.h"
#include"dictionary.h"
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
template<typename key,typename E>
class BSTnode: public BinNode<E>{
private:
key k;
E it;
BSTnode* lc;
BSTnode* rc;
public:
BSTnode(){
lc=NULL; rc=NULL;}
BSTnode(key K,E e, BSTnode *l=NULL,BSTnode* r=NULL){
k=K;it=e;lc=l;rc=r;
}
~BSTnode() {
}
E& element(){
return it;}</
C++二叉搜索树实现字典(dictionary)
最新推荐文章于 2024-11-18 21:20:29 发布