zoukankan      html  css  js  c++  java
  • 层次遍历二叉树

    http://www.oschina.net/code/snippet_257994_10789

    1. [代码][C/C++]代码     跳至 [1] [全屏预览]

    01 #include <stdio.h>
    02 #include<stdlib.h>
    03 typedef struct Bitree
    04 {
    05     int data;
    06     struct Bitree *Lchild,*Rchild;
    07 }BitreeNode,*LinkBitree;
    08  
    09 typedef struct QueueList
    10 {
    11     LinkBitree data[20];
    12     int front,rear;
    13 }QueueList,*LinkQueue;
    14  
    15 LinkBitree CreatBitree();
    16  
    17 void LevelOrderTraverse(LinkBitree);
    18  
    19 void InitQueue(LinkQueue);
    20  
    21 int main()
    22 {
    23     LinkBitree BitreeHead;
    24     printf("请输入根结点的值e:");
    25     BitreeHead=CreatBitree();
    26     LevelOrderTraverse(BitreeHead);
    27     return 0;
    28 }
    29  
    30 LinkBitree CreatBitree()
    31 {
    32     int e_data;
    33     LinkBitree BitreeHead;
    34     scanf("%d",&e_data);
    35     if(e_data!=0)
    36     {
    37         BitreeHead=(LinkBitree)malloc(sizeof(BitreeNode));
    38         if(BitreeHead==NULL)
    39         {
    40             printf("Error!!");
    41         }
    42         else
    43         {
    44             BitreeHead->data=e_data;
    45             printf("请输入结点%d的左孩子结点的值:e= ",BitreeHead->data);
    46             BitreeHead->Lchild=CreatBitree();
    47             printf("请输入结点%d的右孩子结点的值:e= ",BitreeHead->data);
    48             BitreeHead->Rchild=CreatBitree();
    49         }
    50     }
    51     else
    52     {
    53         BitreeHead=NULL;
    54     }
    55     return BitreeHead;
    56 }
    57 void LevelOrderTraverse(LinkBitree BitreeHead)
    58 {
    59     LinkQueue Q;
    60     Q=(LinkQueue)malloc(sizeof(sizeof(QueueList)));
    61     InitQueue(Q);
    62     if(BitreeHead!=NULL)
    63     {
    64         Q->data[Q->rear]=BitreeHead;
    65         Q->rear=Q->rear+1;
    66     }
    67     while(Q->front!=Q->rear)
    68     {
    69         printf("%d  ",Q->data[Q->front]->data);
    70         if(Q->data[Q->front]->Lchild!=NULL)
    71         {
    72             Q->data[Q->rear]=Q->data[Q->front]->Lchild;
    73             Q->rear=Q->rear+1;
    74         }
    75         if(Q->data[Q->front]->Rchild!=NULL)
    76         {
    77             Q->data[Q->rear]=Q->data[Q->front]->Rchild;
    78             Q->rear=Q->rear+1;
    79         }
    80         Q->front=Q->front+1;
    81     }
    82 }
    83 void InitQueue(LinkQueue Q)
    84 {
    85     Q->front=Q->rear=0;
    86 }
  • 相关阅读:
    C语言网 蓝桥杯 1117K-进制数
    C语言网蓝桥杯1116 IP判断
    LeetCode 面试题14- II. 剪绳子 II
    LeetCode 面试题06. 从尾到头打印链表
    LeetCode 面试题05. 替换空格
    LeetCode 面试题04. 二维数组中的查找
    LeetCode 面试题03. 数组中重复的数字
    LeetCode 3. 无重复字符的最长子串
    LeetCode 202. 快乐数
    LeetCode 154. 寻找旋转排序数组中的最小值 II
  • 原文地址:https://www.cnblogs.com/xuhj001/p/3450240.html
Copyright © 2011-2022 走看看