首页 > 代码库 > 二叉排序树
二叉排序树
输入一系列整数,建立二叉排序树,并进行先、中、后序遍历
代码:
1 #include<stdio.h> 2 #include<string.h> 3 struct Node{ 4 Node *lchild,*rchild; 5 int c; 6 }Tree[110]; 7 int loc; 8 Node *create(){ 9 Tree[loc].lchild=Tree[loc].rchild=NULL; 10 return &Tree[loc++]; 11 } 12 void postOrder(Node *T){//后序遍历 13 if(T->lchild!=NULL){ 14 postOrder(T->lchild); 15 } 16 if(T->rchild!=NULL){ 17 postOrder(T->rchild); 18 } 19 printf("%d",T->c); 20 } 21 void inOrder(Node *T){//中序遍历 22 if(T->lchild!=NULL){ 23 postOrder(T->lchild); 24 } 25 printf("%d",T->c); 26 if(T->rchild!=NULL){ 27 postOrder(T->rchild); 28 } 29 } 30 void preOrder(Node *T){//先序遍历 31 printf("%d",T->c); 32 if(T->lchild!=NULL){ 33 postOrder(T->lchild); 34 } 35 if(T->rchild!=NULL){ 36 postOrder(T->rchild); 37 } 38 39 } 40 Node *Insert(Node *T,int x){ 41 if(T==NULL){ 42 T=create(); 43 T->c=x; 44 return T; 45 } 46 else if(x<T->c){ 47 T->lchild=Insert(T->lchild,x); 48 } 49 else if(x>T->c){ 50 T->rchild=Insert(T->rchild,x); 51 } 52 return T; 53 } 54 int main(){ 55 int n; 56 while(scanf("%d",&n)!=EOF){ 57 loc=0; 58 Node *T=NULL; 59 for(int i=0;i<n;i++){ 60 int x; 61 scanf("%d",&x); 62 T=Insert(T,x); 63 } 64 preOrder(T); 65 printf("\n"); 66 inOrder(T); 67 printf("\n"); 68 postOrder(T); 69 printf("\n"); 70 } 71 return 0; 72 }
二叉排序树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。