小标
2018-10-10
来源 :
阅读 1443
评论 0
摘要:本文主要向大家介绍了C/C++知识点之C语言实现常用数据结构——二叉树,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言实现常用数据结构——二叉树,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
#include
#include
#define SIZE 10
typedef struct Tree {
int data;
struct Tree *left;
struct Tree *right;
} tree;
int find(tree *t,int x) {
int i=0;
if(t==NULL) {
return -1;
}
if(t->data==x) {
return i;
} else if(x
i++;
find(t->left,x);
} else if(x>t->data) {
i++;
find(t->right,x);
}
}
tree *findMin(tree *t) {
if(t==NULL) {
return NULL;
} else if(t->left==NULL) {
return t;
} else {
return findMin(t->left);
}
}
int findMax(tree *t) {
if(t!=NULL) {
while(t->right!=NULL) {
t=t->right;
}
}
return t->data;
}
tree *init(tree *t,int x) {
if(t==NULL) {
t=malloc(sizeof(tree));
t->data=x;
t->left=NULL;
t->right=NULL;
return t;
} else if(t->left ==NULL) {
t->left=init(t->left,x);
return t;
} else {
t->right=init(t->right,x);
return t;
}
}
tree *insertSort(tree *t,int x) {
if(t==NULL) {
t=malloc(sizeof(tree));
t->data=x;
t->left=NULL;
t->right=NULL;
} else if(x < t->data) {
t->left=insertSort(t->left,x);
} else if(x > t->data) {
t->right=insertSort(t->right,x);
}
return t;
}
tree *delete(tree *t,int x) {
tree *temp;
if(t==NULL) {
printf("error,element not found!");
} else if( x < t->data ) {/*go left*/
t->left=delete(t->left,x);
} else if( x > t->data ) {/*go right*/
t->right=delete( t->right,x );
} else if( t->left && t->right) { /*t->data==x and t has two children*/
temp=findMin( t->right );
t->data=temp->data;
t->right=delete( t->right,t->data );
} else {/*one or zero children */
temp=t;
if( t->left==NULL) {
t=t->right;
} else if( t->right == NULL ) {
t=t->left;
}
free(temp);
}
return t;
}
void preTravel(tree *t) {
if(t==NULL) {
return;
}
printf("%d ",t->data);
preTravel(t->left);
preTravel(t->right);
}
void midTravel(tree *t) {
if(t==NULL) {
return;
}
midTravel(t->left);
printf("%d ",t->data);
midTravel(t->right);
}
void postTravel(tree *t) {
if(t==NULL) {
return;
}
postTravel(t->left);
postTravel(t->right);
printf("%d ",t->data);
}
main() {
tree *t;
int i;
for(i=0; i<SIZE; i++) {
t=init(t,i);
}
preTravel(t);
printf("\n");
midTravel(t);
printf("\n");
postTravel(t);
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号