二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
来源:互联网 发布:中国隐形富豪知乎 编辑:程序博客网 时间:2024/06/08 12:26
掌握二叉树的二叉链表存储结构;掌握二叉树的遍历规则;利用二叉树的二叉链表存储结构实现二叉树的建树操作;利用二叉树的二叉链表存储结构实现二叉树层次遍历操作
二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树----队列形式
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define STACK_MAX_SIZE 30
#define QUEUE_MAX_SIZE 30
typedef struct BitNode{
char data;
struct BitNode *lchild;
struct BitNode *rchild;
}BitNode,*BiTree;;
typedef struct node
{
BitNode *data;
}node,*queue;
typedef struct Queue
{ node *base;
int front;
int rear;
}Queue;
void InitQueue(Queue *Q)
{ Q->base=(queue)malloc(QUEUE_MAX_SIZE*sizeof(node));
Q->front=Q->rear=0;
}
int EmptyQueue(Queue *Q)
{ if(Q->front==Q->rear)
return 1;
else
return 0;
}
void EnQueue(Queue *Q,BitNode *e)
{ Q->base[Q->rear].data=e;
Q->rear++;
}
BiTree DeQueue(Queue *Q)
{
int m;
m=Q->front;
Q->front++;
return (Q->base[m].data);
}
char a[50];
BiTree CreatBiTree(BiTree T)
{
BiTree p;
BiTree s[STACK_MAX_SIZE];
int top = -1;
int flag;
int i = 0;
T=NULL;
while(a[i]!='#')
{
switch(a[i])
{case' ':break;
case '(':
top++;
s[top] = p;
flag = 1;
break;
case ')':
top--;
break;
case ',': flag = 0; break;
default: p = (BitNode *)malloc(sizeof(BitNode));
p->data = a[i];
p->lchild = p->rchild = NULL;
if(T==NULL)
{ T=p; }
else
{ if( flag == 1)
{ s[top]->lchild = p; }
else { s[top]->rchild = p; }
}
}
i++;
}
return T;
}
void LevelOrder(BiTree T)
{ Queue l;
Queue *Q=&l;
BiTree p;
InitQueue(Q);
if(T)
{EnQueue(Q,T);
while(!EmptyQueue(Q))
{ p=DeQueue(Q);
printf("%c",p->data);
if(p->lchild)
EnQueue(Q,p->lchild);
if(p->rchild)
EnQueue(Q,p->rchild);
}
}
}
void main()
{
BitNode *T;
printf("please input the Generalized list: \n");
gets(a);
T=CreatBiTree(T);
printf("the order is:\n");
LevelOrder(T);
getch();
}
- 二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
- 二叉树采用二叉链表结构表示。设计并实现如下算法:后序递归建树,先序非递归遍历该树。
- 广义表建二叉树并按层次遍历该二叉树
- 二叉树1:广义表形式生成二叉链表形式,利用队列输出层次结构
- 建立二叉树,并层次遍历输出
- 输入二叉树的广义表建立二叉树
- 输入二叉树的广义表形式建立二叉树+C++
- 广义表建立二叉树
- 广义表建立二叉树
- 广义表的二叉树的形式
- 二叉树先序遍历中序遍历结果得出该树,并以后序遍历形式输出
- 二叉树的广义表形式
- 二叉树的广义表形式
- 二叉树层次遍历的应用--改造二叉链表
- 二叉树:利用广义表创建二叉树,并实现指定结点的删除
- 按照层次遍历并打印二叉树
- 采用二叉链表作为二叉树的存储结构
- 【数据结构作业四】以二叉链表作存储结构,建立一棵二叉树,并输出该二叉树的先序、中序、后序遍历序列、高度和其叶子结点数。
- 这个压缩比例可以和操作系统“gzip -9”相媲美,某些特例下有可能比gzip还要高效。体验之,供参考。
- spring依赖二
- 三层架构,够不够---DDD眼中的三层(附C#源代码实现)
- whoami程序的一种实现,用于talk程序中查看远程用户的
- oracle sql日期比较
- 二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
- 什么叫端口,怎么找或查询,IP怎么设置,怎么查询?
- 我学英文的方法---张五常
- Ubuntu下VIM的安装和基本用法
- Fedora 15 下配置Latex中文环境
- NYOJ-542 试制品【字典树】
- 英文地址的书写
- Surciata源码分析之IpsNFQ模式(1)
- Visual C++中的活动数据对象