资源简介
按先序扩展序列建立二叉树
先序、中序、后序遍历的递归算法
中序遍历的非递归算法
先序遍历的非递归算法
后序遍历的非递归算法
层次的非递归算法
求二叉树的深度(后序遍历)

代码片段和文件信息
#include
#include
#include
#define NULL 0
#define OVERFLOW 0
#define MAXLEN 1000
typedef struct BiTNode{
char data;
struct BiTNode * lchild * rchild; //左右孩子指针
}BiTNode * BiTree;
struct node{
BiTree vec[MAXLEN];
int fr;
} q;
int count=0;
//按先序输入二叉树结点的值
bool CreateBiTree(BiTree &T) {
char ch;
scanf(“%c“&ch);
if (ch==‘ ‘)
T = NULL;
else {
if (!(T = (BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data = ch; // 生成根结点
CreateBiTree(T->lchild); // 构造左子树
CreateBiTree(T->rchild); // 构造右子树
}
return true;
}
void Preorder (BiTree T)
{ // 先序遍历二叉树
if (T) {
printf(“%c “T->data ); // 访问根结点
Preorder(T->lchild); // 遍历左子树
Preorder(T->rchild);// 遍历右子树
}
}
void Inorder (BiTree T)
{ // 中序遍历二叉树
if (T) {
Inorder(T->lchild); // 遍历左子树
printf(“%c “T->data ); // 访问根结点
Inorder(T->rchild);// 遍历右子树
}
}
void Postorder (BiTree T)
{ // 后序遍历二叉树
if (T) {
Postorder(T->lchild); // 遍历左子树
Postorder(T->rchild);// 遍历右子树
printf(“%c “T->data ); // 访问根结点
}
}
//先序非递归算法
void preorder( BiTree b)
{
BiTree stack[1000];
BiTree p;
int top;
if (b!=NULL)
{
top=1; //根结点入栈
stack[top]=b;
while (top>0) //栈不为空时循环
{
p=stack[top]; //退栈并访问该结点
top--;
printf(“%c “p->data);
if (p->rchild!=NULL) //右孩子入栈
{
top++;
stack[top]=p->rchild;
}
if (p->lchild!=NULL) //左孩子入栈
{
top++;
stack[top]=p->lchild;
}
}
}
}
//中序非递归算法
void inorder( BiTree b)
{
BiTree stack[1000]p;
int top=0;
p=b;
do
{
while (p!=NULL) //扫描所有左结点,并入栈
{
top++;
stack[top]=p;
p=p->lchild;
}
if (top>0)
{
p=stack[top];
//p所指结点为无左子树的结点或其左子树已遍历过
top--;
printf(“%c “p->data); //访问结点
p=p->rchild; //扫描右子树
}
} while (p!=NULL||top!=0);
}
//后序非递归算法
void postorder( BiTree b)
{
BiTree stack[1000]p;
int tag[1000] top=0;
p=b;
do
{
while(p!=NULL) //扫描所有左结点,并入栈
{
top++;
tag[top]=0;
stack[top]=p;
p=p->lchild;
}
//p所指结点为无左子树的结点或其左子树已遍历过
while ((top>0) && tag[top]==1)
// p的左右子树都访问过
{
printf(“%c “ stack[top] ->dat
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4405 2008-11-15 20:20 建树&遍历&深度&查找\Debug\depth.obj
....... 168049 2004-11-24 10:57 建树&遍历&深度&查找\Debug\PrInPoOrder.exe
....... 194360 2004-11-24 10:57 建树&遍历&深度&查找\Debug\PrInPoOrder.ilk
....... 14204 2004-11-24 10:57 建树&遍历&深度&查找\Debug\PrInPoOrder.obj
....... 222380 2004-11-24 10:14 建树&遍历&深度&查找\Debug\PrInPoOrder.pch
....... 435200 2004-11-24 10:57 建树&遍历&深度&查找\Debug\PrInPoOrder.pdb
....... 41984 2004-11-24 10:57 建树&遍历&深度&查找\Debug\vc60.idb
....... 53248 2004-11-24 10:57 建树&遍历&深度&查找\Debug\vc60.pdb
....... 163904 2008-11-09 16:42 建树&遍历&深度&查找\Debug\递归遍历.exe
文件 172160 2008-11-09 16:42 建树&遍历&深度&查找\Debug\递归遍历.ilk
....... 222348 2008-11-09 16:42 建树&遍历&深度&查找\Debug\递归遍历.pch
....... 345088 2008-11-09 16:42 建树&遍历&深度&查找\Debug\递归遍历.pdb
文件 5797 2008-11-23 00:14 建树&遍历&深度&查找\PrInPoOrder.cpp
文件 3461 2004-11-24 10:57 建树&遍历&深度&查找\PrInPoOrder.dsp
文件 547 2004-11-24 10:58 建树&遍历&深度&查找\PrInPoOrder.dsw
文件 50176 2004-11-24 10:58 建树&遍历&深度&查找\PrInPoOrder.ncb
....... 48640 2004-11-24 10:58 建树&遍历&深度&查找\PrInPoOrder.opt
文件 1216 2004-11-24 10:57 建树&遍历&深度&查找\PrInPoOrder.plg
....... 4311 2008-11-09 16:43 建树&遍历&深度&查找\递归遍历.dsp
文件 541 2008-11-09 16:41 建树&遍历&深度&查找\递归遍历.dsw
....... 33792 2008-11-09 16:43 建树&遍历&深度&查找\递归遍历.ncb
文件 48640 2008-11-09 16:43 建树&遍历&深度&查找\递归遍历.opt
文件 1294 2008-11-09 16:42 建树&遍历&深度&查找\递归遍历.plg
目录 0 2009-04-03 01:04 建树&遍历&深度&查找\Debug
目录 0 2009-04-03 01:04 建树&遍历&深度&查找
----------- --------- ---------- ----- ----
2235745 25
- 上一篇:教学计划编制问题有向图和拓扑排序
- 下一篇:光立方仿真及程序
相关资源
- Scratch源码
- E4A无障碍跨程序操作类库(带源码、
- 设备管理系统源码
- 安卓wifi直连app源码
- 我的世界源码(易语言版)
- labview编程软件滤波器以及编写程序设
- 我的界面(visual foxpro)源码
- 易语言:一键cf基址源码
- The Secret Path 3D 3D魔方迷宫[源码][scra
- scratch垃圾分类源码(最终版本).sb
- VisualStudioUninstaller vs卸载工具
- 安卓QQ6.71协议源码易语言,qq协议源码
- 编译原理实验工具及参考源码(lex&
- E盾偷后台工具源码
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- UNIX/LINUX编程实践教程的源码
- 使用选择性重传协议实现UDP可靠通信
- 十以内加减法练习 powerbuilder源码
- 农场开发项目
- VC 获得文件属性 获取文件的创建时
- OCR源码
- PLC上位机编程软件
- 用foobar2000听google音乐[更新一下]
- 学生信息管理系统源码
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 毕业论文之温度传感器DS18B20(源码
- 可自定义导航网站源码
- 栅栏填充算法源码(VC)
评论
共有 条评论