www.pudn.com > apriori的vc源代码.zip > HashTree.h


// HashTree.h: interface for the CHashTree class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_HASHTREE_H__65930613_0F74_4631_8520_4D5F779D9F6A__INCLUDED_) 
#define AFX_HASHTREE_H__65930613_0F74_4631_8520_4D5F779D9F6A__INCLUDED_ 
 
#include "List.h" 
#include "itemSet.h" 
 
#define BUCKET_SIZE 100 /* the number of buckets in the hash tree*/ 
#define TABLE_SIZE 500 /* the number of buckets in the hash tree*/ 
 
#define LEAF     1 
#define INTERNAL 2 
 
/* node in the hash tree*/ 
typedef struct hashnode HashNode; 
struct hashnode 
{ 
    int nodetype;  /* nodetype L=leaf, N=non-terminal node*/ 
     
    union { 
            List *largeset; /*corresponding to a leaf node*/ 
            HashNode *tab[TABLE_SIZE]; /*corresponding to a non-tem node, each bucket points to another node*/ 
    } vp; 
}; 
 
 
class CHashTree { 
 
public: 
 
    HashNode *root; 
     
    CHashTree(); 
    ~CHashTree(); 
     
    int hash(itemSet *itemset, int level); 
     
    HashNode * newnode(int nodetype); 
    void freenode(HashNode *node); 
 
    void insert(HashNode **hp, itemSet *s, int level ); 
    void subset(HashNode *head, itemSet *t, int m); 
 
    void scan(HashNode *head, List *result, long minsup); 
     
}; 
 
#endif // !defined(AFX_HASHTREE_H__65930613_0F74_4631_8520_4D5F779D9F6A__INCLUDED_)