按层次 建立二叉树
2014-09-25 08:45
204 查看
#include "stdio.h"
#include "stdlib.h"
#define max 100
#define null 0
typedef struct node
{ char data;
struct node
*lchild,*rchild;
} btree;
btree *Q[max]; //定义队列
btree
*CREATREE(){
//非递归建立二叉树
char ch;
int front=1,rear=0; //初始化队列
btree *root,*s;
root=null;
//置空队列
printf("'@'表示'空','#'表示'结束'\n");
ch=getchar();
while(ch!='#') //假设结点值为单字符,#为输入结束符号
{ s=null;
//先假设读入的为空结点"@"
if(ch!='@')
{ s=(btree
*)malloc(sizeof(btree)); //生成新结点
s->data=ch;
s->lchild=null;
s->rchild=null;
//新结点赋值
}
rear++; //队尾指针自增
Q[rear]=s; //将新结点地址或空结点地址(NULL)入队
if(rear==1) root=s;
//若rear为1,则说明是根结点,用root指向它
else
{ if(s&&Q[front])
//当前结点及其双亲结点都不是空结点
if(rear%2==0) Q[front]->lchild=s;
//rear为偶数,新结点应作为左孩子结点
else
Q[front]->rchild=s;
//rear为奇数,新结点应作为右孩子结点
if(rear%2==1) front++;
//rear为奇数,说明两个孩子已经处理完,front指向下一个双亲
}
ch=getchar(); //读出下一个结点的值
}
return root;
}
void main()
{
btree *tree;
tree=CREATREE();
}
#include "stdlib.h"
#define max 100
#define null 0
typedef struct node
{ char data;
struct node
*lchild,*rchild;
} btree;
btree *Q[max]; //定义队列
btree
*CREATREE(){
//非递归建立二叉树
char ch;
int front=1,rear=0; //初始化队列
btree *root,*s;
root=null;
//置空队列
printf("'@'表示'空','#'表示'结束'\n");
ch=getchar();
while(ch!='#') //假设结点值为单字符,#为输入结束符号
{ s=null;
//先假设读入的为空结点"@"
if(ch!='@')
{ s=(btree
*)malloc(sizeof(btree)); //生成新结点
s->data=ch;
s->lchild=null;
s->rchild=null;
//新结点赋值
}
rear++; //队尾指针自增
Q[rear]=s; //将新结点地址或空结点地址(NULL)入队
if(rear==1) root=s;
//若rear为1,则说明是根结点,用root指向它
else
{ if(s&&Q[front])
//当前结点及其双亲结点都不是空结点
if(rear%2==0) Q[front]->lchild=s;
//rear为偶数,新结点应作为左孩子结点
else
Q[front]->rchild=s;
//rear为奇数,新结点应作为右孩子结点
if(rear%2==1) front++;
//rear为奇数,说明两个孩子已经处理完,front指向下一个双亲
}
ch=getchar(); //读出下一个结点的值
}
return root;
}
void main()
{
btree *tree;
tree=CREATREE();
}
相关文章推荐
- 二叉树的建立&&前中后遍历(递归实现)&&层次遍历
- 标题:深度分销的方向和尺度 内容:<P> 深度分销的方向和尺度<BR> 所谓深度分销,有人也称之为通路精耕细作,是通过减少原有渠道层次,并增强中间商分销能力或通过企
- 一步一步复习数据结构和算法基础-层次建立层次遍历二叉树
- 面试题:二叉树的层次遍历,包括定制树的建立
- Ubuntu&nbsp;建立交叉编译工具4.3.2[转]
- 二叉树的建立、遍历、深度、高度及层次遍历
- 二叉树 建立 && 遍历 && 深度 && 树形打印 (增强版)
- latex article 层次结构
- java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
- ModelSim SE 10.0a建立并调…
- zzuli 1208二叉树(一)
- ZZULI 1208 二叉树(1)
- 二叉树先序后序递归建立,前中后序层次非递归遍历,以及统计叶子结点个数以及树的深度
- 利用Google&nbsp;App&nbsp;Engine建立强大的B…
- java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
- 二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
- SQL&nbsp;SERVER中建立索引及引用
- 二叉树建立 以及 bfs层次遍历
- 九度:1009<二叉搜索树><二叉排序树><建立二叉树><遍历>
- ZZULI 1209二叉树(二)