资源简介
按先序扩展序列建立二叉树
先序、中序、后序遍历的递归算法
中序遍历的非递归算法
先序遍历的非递归算法
后序遍历的非递归算法
层次的非递归算法
求二叉树的深度(后序遍历)
代码片段和文件信息
#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
- 上一篇:教学计划编制问题有向图和拓扑排序
- 下一篇:光立方仿真及程序
相关资源
- 自己动手改造TabControl--从山寨Safari开
- 强化学习实验 小车爬山例程
- win8加载圆圈动画(含源码/demo)
- N皇后问题答案求解QT实现带源码
- e4a e4a源码 彩票35选7源码
- dnf黄龙脚本源码
- 本人写的win7 64位 过tp双机调试源码及
- MSP430F5529+ESP8266连接手机热点源码例程
- sphinx使用rt实时索引源码
- 数据结构课程设计之客户积分管理系
- Unity3D使用socket通讯源码
- 简单防火墙功能程序设计源码
- 微型伺服马达原理与控制.doc
- delphi 7 idhttp post 的8种使用方法(含源
- 模拟病人排队看病实验程序代码
- Delphi遍历二叉树源代码..rar
- 远控小木马
- 塔防游戏源码
- 气象数据生成卫星云图雷达雨量风力
- 扫雷源码 + 素材 注释完全
- 最完整的图书管理系统的设计与实现
- 在线照片冲印系统客户端源码
- 局域网跳棋源代码
- Serpent加密算法
- 行程编码,JPEG压缩编码
- 一个漂亮的打地鼠游戏源码
- 心理在线咨询系统 v2.1
- 计算机机房管理系统
- 机房管理系统(源代码)
- Exactly like the classic etch-a-sketch game yo
评论
共有 条评论