[OJ]1005:Binary Search Tree analog
Input
		The first integer of the input is T, the number of test cases.
Each test case has two lines.
The first line contain an integer N,(1<=N<=1000), the number of numbers need to be inserted into the BST.
The second line contain N integers separated by space, each integer is in the range of [0,230].
	
	
#include <stdio.h>
#include <stdlib.h>
typedef struct _Node{
        int data;
        struct _Node *left;
        struct _Node *right;
}Node;
void insert(Node *T, int x){
        Node *p = T;
        Node *f = T;
        while(p != NULL){
                f = p;
                if(x<p->data){
                        p = p->left;
                }else{
                        p = p->right;
                }
        }
        p = malloc(sizeof(Node));
        p->data = x;
        p->left = p->right = NULL;
        if(x<f->data){
                f->left = p;
        }else{
                f->right = p;
        }
}
void pre_order(Node *T){
        if(T == NULL){
                return;
        }
        printf("%d ", T->data);
        pre_order(T->left);
        pre_order(T->right);
}
void in_order(Node *T){
        if(T == NULL){
                return;
        }
        in_order(T->left);
        printf("%d ", T->data);
        in_order(T->right);
}
void post_order(Node *T){
        if(T == NULL){
                return;
        }
        post_order(T->left);
        free(T->left);
        T->left = NULL;
        post_order(T->right);
        free(T->right);
        T->right = NULL;
        printf("%d ", T->data);
}
void main(){
        int t, vertices, vertex;
        Node *T=NULL;
        scanf(" %d", &t);
        while(t--){
                scanf(" %d", &vertices);
                while(vertices--){
                        scanf(" %d", &vertex);
                        if(T == NULL){
                                T = malloc(sizeof(Node));
                                T->data = vertex;
                                T->left = NULL;
                                T->right = NULL;
                        }else{
                                insert(T, vertex);
                        }
                }
                pre_order(T);
                printf("\n");
                in_order(T);
                printf("\n");
                post_order(T);
                printf("\n");
                free(T);
                T = NULL;
        }
}
	标签: C
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
 - 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
 - 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
 - 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
 - Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
 
分类
最新评论
- Goonog	
i get it now :) - 萧	
@Fluzak:The web host... - Fluzak	
Nice blog here! Also... - Albertarive	
In my opinion you co... - ChesterHep	
What does it plan? - ChesterHep	
No, opposite. - mojoheadz	
Everything is OK!... - Josephmaigh	
I just want to say t... - ChesterHep	
What good topic - AnthonyBub	
Certainly, never it ... 
发表评论: