返回顶部

收藏

层次遍历二叉树

更多
#include <stdio.h>
#include<stdlib.h>
typedef struct Bitree
{
    int data;
    struct Bitree *Lchild,*Rchild;
}BitreeNode,*LinkBitree;

typedef struct QueueList
{
    LinkBitree data[20];
    int front,rear;
}QueueList,*LinkQueue;

LinkBitree CreatBitree();

void LevelOrderTraverse(LinkBitree);

void InitQueue(LinkQueue);

int main()
{
    LinkBitree BitreeHead;
    printf("请输入根结点的值e:");
    BitreeHead=CreatBitree();
    LevelOrderTraverse(BitreeHead);
    return 0;
}

LinkBitree CreatBitree()
{
    int e_data;
    LinkBitree BitreeHead;
    scanf("%d",&e_data);
    if(e_data!=0)
    {
        BitreeHead=(LinkBitree)malloc(sizeof(BitreeNode));
        if(BitreeHead==NULL)
        {
            printf("Error!!");
        }
        else
        {
            BitreeHead->data=e_data;
            printf("请输入结点%d的左孩子结点的值:e= ",BitreeHead->data);
            BitreeHead->Lchild=CreatBitree();
            printf("请输入结点%d的右孩子结点的值:e= ",BitreeHead->data);
            BitreeHead->Rchild=CreatBitree();
        }
    }
    else
    {
        BitreeHead=NULL;
    }
    return BitreeHead;
}
void LevelOrderTraverse(LinkBitree BitreeHead)
{
    LinkQueue Q;
    Q=(LinkQueue)malloc(sizeof(sizeof(QueueList)));
    InitQueue(Q);
    if(BitreeHead!=NULL)
    {
        Q->data[Q->rear]=BitreeHead;
        Q->rear=Q->rear+1;
    }
    while(Q->front!=Q->rear)
    {
        printf("%d  ",Q->data[Q->front]->data);
        if(Q->data[Q->front]->Lchild!=NULL)
        {
            Q->data[Q->rear]=Q->data[Q->front]->Lchild;
            Q->rear=Q->rear+1;
        }
        if(Q->data[Q->front]->Rchild!=NULL)
        {
            Q->data[Q->rear]=Q->data[Q->front]->Rchild;
            Q->rear=Q->rear+1;
        }
        Q->front=Q->front+1;
    }
}
void InitQueue(LinkQueue Q)
{
    Q->front=Q->rear=0;
}
//该片段来自于http://outofmemory.cn

标签:c++,算法

收藏

0人收藏

支持

0

反对

0

»更多 您可能感兴趣的代码
  1. 2014-10-22 13:04:13A星算法 by 灵剑子
  2. 2014-12-06 11:00:26词法分析 by 童学芬
  3. 2012-11-03 19:21:55c语言实现顺序查找和二分查找的示例 by 林峰
  4. 2012-12-06 21:23:15c++大数阶乘算法 by zetaliang
  5. 2012-12-20 13:30:20伪造硬币问题 by 傅小黑
  6. 2013-07-27 15:09:08C++顺序表操作代码演示 by qqmmcc
  7. 2014-04-05 14:40:50C++算法之可变参数 by 童学芬
  8. 2014-05-18 11:40:55KMP字符串匹配算法 by 童学芬
  9. 2014-05-19 15:46:15高效素数筛法 by lucasli
  10. 2014-05-20 12:48:01线性表之顺序表 by 千万不要郁闷
  11. 2014-05-22 13:29:39递归题改为非递归题实例 by lucasli
相关聚客文章
  1. leaver 发表 2013-06-02 07:44:22 阿里巴巴5月5日综合算法题详解
  2. dianlujitao 发表 2014-10-16 14:11:10 CodeForces 23A You’re Given a String…
  3. dianlujitao 发表 2014-10-17 13:14:36 CodeForces 23B Party
  4. dianlujitao 发表 2014-10-17 13:32:08 POJ 2339 Rock, Scissors, Paper
  5. bystander 发表 2013-04-11 10:50:25 模板栈以及中缀表达式求值(C++实现)
  6. dianlujitao 发表 2014-10-17 13:42:33 POJ 3844 Divisible Subsequences
  7. dianlujitao 发表 2014-10-17 13:45:25 POJ 3122 Pie
  8. bystander 发表 2013-04-16 00:42:58 模板优先级队列及堆排序(C++实现)
  9. dianlujitao 发表 2014-10-17 13:52:22 POJ 2388 Who’s in the Middle
  10. surgesoft 发表 2014-10-28 08:01:58 LeetCode OJ: Restore IP Addresses
  11. espace 发表 2015-07-18 17:43:14 Two Sum
  12. abyssss 发表 2014-05-20 03:23:39 数据结构 最小堆 数组实现

发表评论