希望大伙指导下,万分感激,为什么会没有结果呢
希望大家指导下,万分感激,为什么会没有结果呢?
/*问题描述:按照先序输入给定一棵二叉树,编程实现该二叉树的层序遍历。
要求:1、选择合适方法和存储结构创建二叉树。
2、层次遍历输出该二叉树。
3、设计算法实现求该二叉树的高度。
数据输入:第一行为先序序列,其中 # 表示孩子为空。
如:
ABC##DE#G##F###
结果输出:第一行为层次遍历序列,第二行为树的高度。
ABCDEFG
*/
#include<iostream.h>
#include "stdlib.h"
#define ok 1
#define overflow -2
#define error -1
#define maxsize 30
typedef char elemtypedef ;
typedef struct node
{elemtypedef data;
struct node *lchild;
struct node*rchild;
}BTNode,* BiTree ;
int CreateBiTree(BiTree &T)
{//按先序次序输入二叉数中节点的值,#表示空树,构造二叉连表表示的二叉数T;//
char t;
cin>>t;
if(t=='#')
T=NULL;
else
{if(!(T=(BTNode*)malloc(sizeof(BTNode))))
exit(overflow);
else
T->data=t;//
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return ok;
}
void LevelOreder(BTNode *b)
{BTNode *p;
BTNode *qu[maxsize];
int front,rear;
front=rear=0;
rear++;
qu[rear]=b;
while(front!=rear)
{front=(front+1)%maxsize;
p=qu[front];
cout<<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;
}
}
}
void main()
{cout<<"请输入先序序列,#表示空树";
BTNode *tree;
CreateBiTree(tree);
cout<<"输出层次遍历序列:";
LevelOreder(tree);
}
------解决方案--------------------
先学会排版,再学debugger。
/*问题描述:按照先序输入给定一棵二叉树,编程实现该二叉树的层序遍历。
要求:1、选择合适方法和存储结构创建二叉树。
2、层次遍历输出该二叉树。
3、设计算法实现求该二叉树的高度。
数据输入:第一行为先序序列,其中 # 表示孩子为空。
如:
ABC##DE#G##F###
结果输出:第一行为层次遍历序列,第二行为树的高度。
ABCDEFG
*/
#include<iostream.h>
#include "stdlib.h"
#define ok 1
#define overflow -2
#define error -1
#define maxsize 30
typedef char elemtypedef ;
typedef struct node
{elemtypedef data;
struct node *lchild;
struct node*rchild;
}BTNode,* BiTree ;
int CreateBiTree(BiTree &T)
{//按先序次序输入二叉数中节点的值,#表示空树,构造二叉连表表示的二叉数T;//
char t;
cin>>t;
if(t=='#')
T=NULL;
else
{if(!(T=(BTNode*)malloc(sizeof(BTNode))))
exit(overflow);
else
T->data=t;//
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return ok;
}
void LevelOreder(BTNode *b)
{BTNode *p;
BTNode *qu[maxsize];
int front,rear;
front=rear=0;
rear++;
qu[rear]=b;
while(front!=rear)
{front=(front+1)%maxsize;
p=qu[front];
cout<<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;
}
}
}
void main()
{cout<<"请输入先序序列,#表示空树";
BTNode *tree;
CreateBiTree(tree);
cout<<"输出层次遍历序列:";
LevelOreder(tree);
}
遍历
二叉树
------解决方案--------------------
先学会排版,再学debugger。