严蔚敏 数据结构习题6.47

来源:互联网 发布:法兰克机器人编程 编辑:程序博客网 时间:2024/05/16 07:08

编写按层次顺序(同一层自左至右)遍历二叉树的算法

#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>#include <queue>using namespace std;typedef struct tnode{    int data;    struct tnode *lchild,*rchild;}*bitree;int creattree(bitree &bt){    char ch;    scanf("%c",&ch);    getchar();    if(ch=='#')bt=NULL;    else    {        bt=(tnode*)malloc(sizeof(tnode));        bt->data=ch;        printf("输入%c的左子节点:", ch);        creattree(bt->lchild);        printf("输入%c的右子节点:", ch);        creattree(bt->rchild);    }    return 1;}void visit(bitree p){    printf("%c ",p->data);}void levelserach(bitree bt){    queue<struct tnode*>que;    bitree p;    if(bt)que.push(bt);    while(!que.empty())    {        p=que.front();        que.pop();        visit(p);        if(p->lchild)que.push(p->lchild);        if(p->rchild)que.push(p->rchild);    }}int main(){    bitree bt;    bt=(tnode*)malloc(sizeof(tnode));    printf("输入根节点:");    creattree(bt);    printf("按层次顺序遍历:\n");    levelserach(bt);    return 0;}
0 0
原创粉丝点击