码迷,mamicode.com
首页 > 编程语言 > 详细

九度 1201 -二叉排序数遍历- 二叉排序树

时间:2015-06-26 22:29:36      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:九度

这个是道正统的树构建和遍历题,一开始还想用数组构建代替一下水过去,但是发现不行,只好老老实实的用指针了。二叉排序树和遍历方法如果不清楚定义的话,最好去看看数据结构书复习下。

#include<stdio.h>

struct node{
    node *l;
    node *r;
    int val;
    node(int a):val(a),l(NULL),r(NULL){};
};
node *root;
int n;
void qian(node *p){
    printf("%d ",p->val);
    if(p->l!=NULL)qian(p->l);
    if(p->r!=NULL)qian(p->r);
}
void zhong(node *p){
    if(p->l!=NULL)zhong(p->l);
    printf("%d ",p->val);
    if(p->r!=NULL)zhong(p->r);
}
void hou(node *p){
    if(p->l!=NULL)hou(p->l);
    if(p->r!=NULL)hou(p->r);
    printf("%d ",p->val);
}
 
int main(){
     
    int val;
    node *p;
    while(~scanf("%d",&n)){
        root=NULL;
        for(int i=0;i<n;i++){
            scanf("%d",&val);
            if(i==0){
                root=new node(val);
                continue;
            }
            p=root;
            while(1){
                if(val==p->val)break;
                else if(val<p->val){
                    if(p->l==NULL){
                        p->l=new node(val);
                        break;
                    }
                    else{
                        p=p->l;continue;
                    }
                }
                else if(val>p->val){
                    if(p->r==NULL){
                        p->r=new node(val);
                        break;
                    }
                    else{
                        p=p->r;continue;
                    }
                }
            }
        }   
        qian(root);
        printf("\n");
        zhong(root);
        printf("\n");
        hou(root);
        printf("\n");
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

九度 1201 -二叉排序数遍历- 二叉排序树

标签:九度

原文地址:http://blog.csdn.net/u010006643/article/details/46654149

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!