目的:写一个Addnode()函数,实现二叉排序树结点的添加,
1、若为空树——直接作为根节点
2、若不为空,且插入元素为不重复,则按二叉排序树的算法进行添加结点
3、若不为空,且插入元素重复,则在结点标记位count++
#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
int count;
struct node *left;
struct node *right;
}Bitree;
void Addnode(Bitree *&tree,int value){
//初始化一个需要添加的结点
Bitree *p=(Bitree*)malloc(sizeof(Bitree));
p->data=value;
p->left=p->right=NULL;
p->count=0;
//空树情形
if(tree==NULL){
tree=p;
return;
}
//非空树情形
Bitree *s,*pre=NULL;
s=tree;
while(s){
//找到重复结点,标志位++
if(s->data=value){
s->count++;
return;
}else if(s->data>value){
pre=s;
s=s->left;
}else{
pre=s;
s=s->right;
}
}
if(pre->data>value){
pre->left=p;
}else{
pre->right=p;
}
return;
}
int main(){
Bitree *test=NULL;//必须初始化
Addnode(test,10);
Addnode(test,10);
Addnode(test,5);
Addnode(test,7);
return 1;
}