Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C BST插入操作。don';如果已经存在重复项,则不要插入节点_C_Insert_Binary Search Tree - Fatal编程技术网

C BST插入操作。don';如果已经存在重复项,则不要插入节点

C BST插入操作。don';如果已经存在重复项,则不要插入节点,c,insert,binary-search-tree,C,Insert,Binary Search Tree,下面的代码读取一个输入数组,并从中构造一个BST。如果当前arr[i]是树中节点的副本,则丢弃arr[i]。结构节点中的计数是指一个数字在数组中出现的次数。fi指数组中找到的元素的第一个索引。在插入之后,我对树进行顺序遍历,并打印数据、计数和索引(按此顺序)。运行此代码时得到的输出是: 0 0 7 0 0 6 谢谢你的帮助 老天爷 struct节点{ int数据; 结构节点*左; 结构节点*右; 国际金融机构; 整数计数; }; 结构节点*binSearchTree(int arr[],int

下面的代码读取一个输入数组,并从中构造一个BST。如果当前arr[i]是树中节点的副本,则丢弃arr[i]。结构节点中的计数是指一个数字在数组中出现的次数。fi指数组中找到的元素的第一个索引。在插入之后,我对树进行顺序遍历,并打印数据、计数和索引(按此顺序)。运行此代码时得到的输出是:

0 0 7
0 0 6
谢谢你的帮助

老天爷

struct节点{
int数据;
结构节点*左;
结构节点*右;
国际金融机构;
整数计数;
};
结构节点*binSearchTree(int arr[],int size);
int setdata(结构节点**节点,int数据,int索引);
void insert(int数据,结构节点**根,int索引);
void sortOnCount(结构节点*根节点);
void main(){
int arr[]={2,5,2,8,5,6,8,8};
int size=sizeof(arr)/sizeof(arr[0]);
结构节点*temp=binSearchTree(arr,size);
sortOnCount(临时);
}   
结构节点*binSearchTree(int arr[],int size){
结构节点*根=(结构节点*)malloc(sizeof(结构节点));
if(!setdata(&root,arr[0],0))
fprintf(stderr,“无法初始化根”);
int i=1;
对于(;ifi=指数;
(*nod)->left=NULL;
(*nod)->right=NULL;
返回1;
}
返回0;
}
无效插入(整型数据,结构节点**根,整型索引){
结构节点*new=(结构节点*)malloc(sizeof(结构节点));
setdata(新建、数据、索引)(&N);
结构节点**临时=根节点;
而(1){
如果(数据){
如果((*temp)->左!=NULL)
*温度=(*temp)->左侧;
否则{
(*temp)->左=新;
打破
}
}
else if(数据>(*temp)->数据){
如果((*temp)->正确!=NULL)
*温度=(*temp)->右侧;
否则{
(*temp)->右=新;
打破
}
}
否则{
(*temp)->count++;
免费(新);
打破
}
}
}
无效排序计数(结构节点*根){
if(root!=NULL){
sortOnCount(根->左);
sortOnCount(根->右);
printf(“%d%d%d\n”,(根)->数据,(根)->计数,(根)->fi);
}   
}

在插入函数的while循环中放入if条件

while(1)
{
    if(data==(*temp)->data)
          break;
    else
    {
         your stuff;
    }
}

这可能是您的答案。

首先,您正在向insert函数中的指针传递一个指针:

void insert(int data, struct node **root, int index);
然后有一个临时变量:

struct node** temp = root;
用于遍历树的。当您这样做时,您正在更改根。只需传递一个指针,即

void insert(int data, node *root , int index){

其次,
if(datadata){
听起来不错!你有问题吗,或者这像是一篇博文吗?:)我得到的输出是错误的,所以希望这里的人能帮我一下!谢谢。
void insert(int data, node *root , int index){