⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 二叉树层次遍历算法.txt

📁 数据结构书上源代码(严蔚敏C语言版)以及二叉树的各种基本算法
💻 TXT
字号:
//二叉树层次遍历算法
#include <stdio.h>
#include <alloc.h>
#define MaxSize 1000
typedef char ElemType; 
typedef struct node 
{
    ElemType data;
    struct node *lchild;
    struct node *rchild;
} BTNode;
//创建二叉树
void CreateBTNode(BTNode *&b,char *str)
{
    BTNode *St[MaxSize],*p=NULL;
    int top=-1,k,j=0;
    char ch;
    b=NULL;
    ch=str[j];
    while(ch!='\0')
    {
        switch(ch)
        {
            case '(':top++;St[top]=p;k=1;break;
            case ')':top--;break;
            case ',':k=2;break;
            default:p=(BTNode *)malloc(sizeof(BTNode));
                    p->data=ch;p->lchild=p->rchild=NULL;
                    if(b==NULL) b=p;
                    else
                    {
                        switch(k)
                        {
                            case 1:St[top]->lchild=p;break;
                            case 2:St[top]->rchild=p;break;
                        }    
                    }    
        }    
        j++;
        ch=str[j];
    }    
}
//层次遍历算法 
void LevelOrder(BTNode *b)
{
    BTNode *p;
    BTNode *qu[MaxSize];
    int front,rear;
    front=rear=-1;
    rear++;
    qu[rear]=b;
    while(front!=rear)
    {
        front=(front+1)%MaxSize;
        p=qu[front];
        printf("%c ",p->data);
        if(p->lchild!=NULL)
        {
            rear=(rear+1)%MaxSize;
            qu[rear]=p->lchild;
        }   
        if(p->rchild!=NULL)
        {
            rear=(rear+1)%MaxSize;
            qu[rear]=p->rchild;
        }     
    }    
}

//主函数
int main()
{
    BTNode *b;
    char s[MaxSize];//A(B(D(,G)),C(E,F)) 
    printf("请输入二叉树括号表示法字符串:\n");
    while(scanf("%s",&s))
    {
        CreateBTNode(b,s);
        printf("层次遍历算法的访问次序为:");
        LevelOrder(b);
        printf("\n请输入二叉树括号表示法字符串:\n");
    }    
    return 0;
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -