二叉树层次遍历

方法一:

//打印指定层结点:
void
print_by_level_1(Tree T) { int i = 0; for (i = 0; ; i++) { if (!print_at_level(T, i)) break; } cout << endl; }
//遍历所有层
void
print_by_level_1(Tree T) { int i = 0; for (i = 0; ; i++) { if (!print_at_level(T, i)) break; } cout << endl; }

方法二:使用l队列

void level_tree(bintree t){
    seqqueue q;
    bintree temp;
    q.front = q.rear = 0;
    if(!t){
        printf("the tree is empty\n");
        return ;
    }
    enter(&q,t);
    while(q.front != q.rear){
        t=del(&q);
        printf("%c ",t->data);
        if(t->lchild){
            enter(&q,t->lchild);
        }
        if(t->rchild){
            enter(&q,t->rchild);
        }
    }
}

 

//队列定义:
#define
MAX 1000 typedef struct seqqueue{ bintree data[MAX]; int front; int rear; }seqqueue; void enter(seqqueue *q,bintree t){ if(q->rear == MAX){ printf("the queue is full!\n"); }else{ q->data[q->rear] = t; q->rear++; } } bintree del(seqqueue *q){ if(q->front == q->rear){ return NULL; }else{ q->front++; return q->data[q->front-1]; } }

 

其它可参考:

层次遍历二叉树-三种不同的方法

数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现

 

posted @ 2017-06-14 00:56  mzzcy  阅读(289)  评论(0编辑  收藏  举报