二叉树

按层次遍历的顺序构建二叉树(非递归)
切记:千万不要返回一个空指针(NULL pointer)

#include<stdlib.h>
#define MAX 50
typedef struct BTNode{
    int val;
    struct BTNode* lchild;
    struct BTNode* rchild;
}BTNode;
void init(BTNode** bt){
    *bt=NULL;
}
void insert_level(int x,BTNode** bt){
    if(*bt==NULL){
        *bt=malloc(sizeof(BTNode));
        (*bt)->lchild=(*bt)->rchild=NULL;
        (*bt)->val=x;
    }else{
        BTNode* que[MAX];
        int front=0,rear=0;
        BTNode* p=*bt;
        rear=(rear+1)%50;
        que[rear]=p;
        while(front!=rear){
            front=(front+1)%50;
            p=que[front];
            if(p->lchild){
                rear=(rear+1)%50;
                que[rear]=p->lchild;
            }else{
                p->lchild=malloc(sizeof(BTNode));
                p=p->lchild;
                p->lchild=p->rchild=NULL;
                p->val=x;
                break;
            }
            if(p->rchild){
                rear=(rear+1)%50;
                que[rear]=p->rchild;
            }else{
                p->rchild=malloc(sizeof(BTNode));
                p=p->rchild;
                p->lchild=p->rchild=NULL;
                p->val=x;
                break;
            }
        }
    }
}
void makeTree(BTNode** bt){
    init(bt);
    int val;
    while(scanf("%d",&val)==1){
        insert_level(val,bt);
    }
}
void display(BTNode* bt){
    if(bt){
        printf("%d ",bt->val);
        display(bt->lchild);
        display(bt->rchild);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,938评论 1 31
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 11,576评论 0 14
  • //转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/d...
    大海一滴写字的地方阅读 3,980评论 0 2
  • 这几天开学,学校还在上课,最近也是在找工作,很多天都没有更新文章,现在补一篇二叉树的文章。 最近校招公司的笔试陆续...
    zero_sr阅读 9,409评论 0 5
  • 阴,无雨,温度温和,事宜活动。上午去县政府办业务的时候,偶遇到大学的班主任谢科,好意外呀。谢科,对学生特别认真负责...
    一树清凉阅读 1,696评论 0 0