| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1410 人关注过本帖
标题:二叉树层次遍历的问题
只看楼主 加入收藏
XiaoLin521
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-12-19
收藏
 问题点数:0 回复次数:1 
二叉树层次遍历的问题
源代码如下:
#include<stdio.h>
 #include<stdlib.h>
 #define max 100

typedef char ElemType;

typedef struct BiTNode{ ElemType data;
struct BiTNode *lchild,*rchild; } BiTNode,*BinTree;

//建立二叉树

void CreateBinTree(BinTree &T){ //按先序次序输入,构造二叉链表表示的二叉树T
int num;

scanf("%c",&num);//输入函数。



if(num=='#') T=NULL; //输入#时为空

else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))

printf("%c" "结点建立失败!") ;

T->data=num;
CreateBinTree(T->lchild);
 CreateBinTree(T->rchild); } }
 
// 遍历二叉树
void LevleOrder(BinTree T){ //从第一层开始,从左到右

BinTree Queue[max],p; //用一维数组表示队列,front和rear分别表示队首和队尾指针

int front,rear;

front=rear=0;

if (T) //若树非空
{

Queue[rear++]=T; //根结点入队列

while (front!=rear){ // 队列非空
 p=Queue[front++]; // 队首元素出队列,并访问这个结点
 printf("%c",p->data);

if (p->lchild!=NULL) Queue[rear++]=p->lchild; //左子树非空,入队列
if (p->rchild!=NULL) Queue[rear++]=p->rchild; } }

}

//按要求输出二叉树

 


int main() {

BinTree T;

printf("\n创建二叉树\n");
 CreateBinTree (T);
printf("\n层次遍历二叉树 并输出遍历结果\n"); LevleOrder(T);

return 0; }

//可以运行 输入二叉树中的元素
但是回车之后 二叉树层次遍历的方法没有运行 没有反应
求大佬解答一下呗
图片附件: 游客没有浏览图片的权限,请 登录注册





搜索更多相关主题的帖子: 二叉树 遍历 printf Queue 队列 
2018-12-19 15:02
XiaoLin521
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-12-19
收藏
得分:0 
#include<stdio.h>
 #include<stdlib.h>
 #define max 100

typedef int ElemType;

typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
} BiTNode,*BinTree;

//建立二叉树

void CreateBinTree(BinTree &T){ //按先序次序输入,构造二叉链表表示的二叉树T
    int num;
    scanf("%d",&num);//输入函数。
    if(num==-1){
        T=NULL;
    }//输入#时为空
    else{
        T=(BinTree)malloc(sizeof(BiTNode));
        T->data=num;
        CreateBinTree(T->lchild);
         CreateBinTree(T->rchild);
    }
 }
 
// 遍历二叉树
void LevleOrder(BinTree T){ //从第一层开始,从左到右

BinTree Queue[max],p; //用一维数组表示队列,front和rear分别表示队首和队尾指针

int front,rear;

front=rear=0;

if (T) //若树非空
{

Queue[rear++]=T; //根结点入队列

while (front!=rear){ // 队列非空
 p=Queue[front++]; // 队首元素出队列,并访问这个结点
 printf("%d",p->data);

if (p->lchild!=NULL) Queue[rear++]=p->lchild; //左子树非空,入队列
if (p->rchild!=NULL) Queue[rear++]=p->rchild;
}
}

}

//按要求输出二叉树

 


int main() {

BinTree T;

printf("\n创建二叉树\n");
 CreateBinTree (T);
printf("\n层次遍历二叉树 并输出遍历结果\n"); LevleOrder(T);

return 0; }





已经解决
2018-12-19 15:57
快速回复:二叉树层次遍历的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016283 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved