• 二叉树层次遍历(以先序输入)


    按层次遍历的原则是先被访问的结点的左右儿子结点也先被访问,因此需引入先进先出的队列作为辅助工具。

    算法思想为:

    1)将二叉树根入队列;

    2)循环直到队列为空

       2.1)将队头元素出队列,

       2.2)访问结点数据域,

       2.3)判断此元素是否有左右孩子,若有,则将它的左右孩子依次入队,否则转(2);

    #include <iostream>
    #include <cstdio>
    #include <malloc.h>
    using namespace std;
    #define MAXSIZE 100
    typedef char DataType;
    typedef struct BiTnode
    {
        DataType data;
        struct BiTnode *lchild,*rchild;
    }BiTNode,*BiTree;
    typedef struct SQueue
    {
        BiTree data[MAXSIZE];
        int front,rear;
    }SQueue,*Queue;
    BiTree creatTree(BiTree root)
    {
        DataType ch;
        root=(BiTree)malloc(sizeof(BiTNode));
        scanf("%c",&ch);
        if(ch=='#') return 0;
        root->data=ch;
        root->lchild=creatTree(root->lchild);
        root->rchild=creatTree(root->rchild);
        return root;
    }
    void InitQueue(Queue Q)
    {
        Q->front=Q->rear=0;
    }
    int IsEmptyQueue(Queue Q)
    {
        return Q->rear==Q->front?1:0;
    }
    void EnQueue(BiTree root,Queue Q)
    {
        if((Q->rear+1)%MAXSIZE==Q->front)
        {
            printf("Queue is fulled!
    ");
            return  ;
        }
        Q->rear=(Q->rear+1)%MAXSIZE;
        Q->data[Q->rear]=root;
    }
    BiTree Gethead(Queue Q)
    {
        if(IsEmptyQueue(Q)) return 0;
        BiTree root;
        root=Q->data[(Q->front+1)%MAXSIZE];
        Q->front=(Q->front+1)%MAXSIZE;
        return root;
    }
    void LevelOrder(BiTree root)
    {
        SQueue Q;
        BiTree t;
        if(!root) return ;
        InitQueue(&Q);
        EnQueue(root,&Q);
        while(!IsEmptyQueue(&Q))
        {
            t=Gethead(&Q);
            printf("%c ",t->data);
            if(t->lchild!=NULL) EnQueue(t->lchild,&Q);
            if(t->rchild!=NULL) EnQueue(t->rchild,&Q);
        }
    }
    int main()
    {
        BiTree tree;
        tree=creatTree(tree);
        LevelOrder(tree);
        return 0;
    }
  • 相关阅读:
    8皇后问题
    求1到n,n个整数的全排列
    求最小周期串
    如何用java完成一个中文词频统计程序
    蛇形矩阵
    第一个算法程序
    java 继承练习题8
    java 继承练习题7
    java 继承练习题6
    java 继承练习题5
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/8928045.html
Copyright © 2020-2023  润新知