1 / 18
文档名称:

数据结构实验报告三.doc

格式:doc   大小:17KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验报告三.doc

上传人:老狐狸 2022/7/22 文件大小:17 KB

下载得到文件列表

数据结构实验报告三.doc

相关文档

文档介绍

文档介绍:数据结构实验报告三
甘肃政法学院
本科生试验报告
()

姓名: 学院: 专业: 班级:
试验课程名称: 试验日期: 指导教师及职称: 试验成绩:
开课时间: 的叶子节点个数:%d\n,LeafNodes(b)); printf( (7)释放二叉树 b\n); DestroyBTNode(b);
}
2 输入程序并运行,如图 ○
实现二叉树的各种遍历算法编写一个程序 exp7-,实现二叉树的各种遍历算法。 1 输入程序如下: ○#include //文件名:exp7- #include #include algo7- #include #define MaxSize 100 typedef char ElemType; void PreOrder(BTNode *b) //先序遍历的递归算法 { if (b!=NULL) { printf(


%c ,b-data); //访问根节点 PreOrder(b-lchild); //递归访问左子树 PreOrder(b-rchild); //递归访问右子树 } } void PreOrder1(BTNode *b) { BTNode *St[MaxSize],*p; int top=-1; if (b!=NULL) { top++; //根节点入栈 St[top]=b; while (top-1) //栈不为空时循环 { p=St[top]; //退栈并访问该节点 top--; printf(%c ,p-data); if (p-rchild!=NULL) //右孩子入栈 { top++; St[top]=p-rchild; } if (p-lchild!=NULL) //左孩子入栈 { top++; St[top]=p-lchild; } } printf(\n); } } void InOrder(BTNode *b) //中序遍历的递归算法 { if (b!=NULL) { InOrder(b-lchild); //递归访问左子树 printf(%c ,b-data); //访问根节点
InOrder(b-rchild); }
//递归访问右子树
} void InOrder1(BTNode *b) { BTNode *St[MaxSize],*p; int top=-1; if (b!=NULL) { p=b; while (top-1 || p!=NULL) { while (p!=NULL) { top++; St[top]=p; p=p-lchild; } if (top-1) { p=St[top]; top--; printf(%c ,p-data); p=p-rchild; } } printf(\n); } } void PostOrder(BTNode *b) //后序遍历的递归算法 { if (b!=NULL) { PostOrder(b-lchild); //递归访问左子树 PostOrder(b-rchild); //递归访问右子树 printf(%c ,b-data); //访问根节点 } } void PostOrder1(BTNode *b) { BTNode *St[MaxSize]; BTNode *p; int flag,top=-1; //栈指针置初值 if (b!=NULL) { do { while (b!=NULL) //将 t 的全部左节点入栈 { top++; St[top]=b; b=b-lchild; } p=NULL; //p 指向当前节点的前一 个已访问的节点 flag=1;


while (top!=-1 flag) { b=St[top]; if (b-rchild==p) { printf(%c ,b-data); top--; p=b; } else { b=b-rchild; flag=0; } } } while (top!=-1); printf(\n);
//取出当前的栈顶元素 //右子树不存在或已被访问,访问之 //访问*b 节点 //p 指向则被访问的节