二叉排序树

 二叉排序树,包括建树的整个过程,还有他的数据结构,应仔细体会。
  
// 2418-二叉排序树.cpp : 定义控制台应用程序的入口点。


#include
" stdafx.h "

#include
< iostream >
using namespace std;

struct node
{
node
* left;
node
* right;
double num;
char str[ 59 ];
}
* head;//这里建了头指针
double sum = 0 ;

void insert( char str[])
{
node
* p1, * p2;
p1
= head;
int t;
while (p1 != NULL)
{
p2
= p1;
t
= strcmp(p1 -> str,str);
if (t == 0 )
{
p1
-> num ++ ;
return ;

}
else if (t < 0 )
{
p1
= p1 -> right;
continue ;
}
else
{
p1
= p1 -> left;
continue ;
}
}
node
* add = new node;
add
-> num = 1 ;
add
-> left = add -> right = NULL;
strcpy(add
-> str,str);
if (t > 0 )
p2
-> left = add;
else
p2
-> right = add;
return ;

}



void pprint(node * p)
{
if (p != NULL)
{
pprint(p
-> left);
printf(
" %s %.4f\n " ,p -> str,(p -> num) * 100 / sum);
pprint(p
-> right);
}

}
int main()
{
char str[ 59 ];

head = new node;//这里是新建了个节点,并让头指针指向他
head
-> left = NULL;
head
-> right = NULL;
head
-> num = 1 ;
sum
= 1 ;
gets(str);
strcpy(head
-> str,str);
head
-> num = 1 ;

while (gets(str) != NULL)
{
sum
++ ;
insert(str);
}
pprint(head);
system(
" pause " );
return 0 ;
}



你可能感兴趣的:(二叉排序树)