函数部分
struct node
{
int t;
node *child[2]; //看情况开大小
node() //结构体初始化
{
t=0;
for (int i=0 ;i<2; i++)
{
child[i]=NULL;
}
}
};
node *root;
int flag=0;
void buildtree(char *a) //建立字典树,并查找
{
node *p;
node * newnode;
int i;
p = root;
for (i=0; i<strlen(a); i++)
{
int m = a[i]-'0';
//cout<<p->child[m]<<endl;
if (p->child[m]!=NULL) //如果树中存在改节点,查找是否结束
{
p = p->child[m];
if (i==(strlen(a)-1)||p->t==1)
{
flag=1;
break;
}
}
else //否则将节点插入树
{
newnode = new node;
p->child[m] = newnode;
p = newnode;
}
}
p->t=1;
}
void ended(node *head) //删除字典树
{
for (int i=0; i<2; i++)
{
if (head->child[i]!=NULL)
ended(head->child[i]);
}
delete head;
}
主函数要初始化根节点