二叉树的遍历算法的具体程序,要调试好的

来源:百度知道 编辑:UC知道 时间:2024/05/02 08:05:56
二叉树的前序、中序和后序遍历的非递归算法
二叉树的前序、中序和后序遍历,还有层次序遍历的递归算法
要调试好的程序代码

课程为数据结构
visual c++ 6.0

线索二叉树算法

#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>
typedef char DataType;/*定义DataType类型*/
typedef enum {Link,Thread}PointerTag;
typedef struct node{
DataType data;
struct node *lchild, *rchild;/*左右孩子子树*/
PointerTag LTag,RTag;
}BiThrNode; /*结点类型*/
typedef BiThrNode *BiThrTree ;/*二叉树类型*/
void CreatBinTree(BiThrTree *T)
{ /*构造二叉链表,注意:输入序列是先序序列*/
char ch;
if ((ch=getchar())==' ')
*T=NULL;
else{ /*读入非空格*/
*T=(BiThrNode *)malloc(sizeof(BiThrNode));/*生成结点*/
(*T)->data=ch;(*T)->LTag=Link;(*T)->RTag=Link;
CreatBinTree(&(*T)->lchild); /*构造左子树 */
CreatBinTree(&(*T)->rchild); /*构造右子树*/
}
}
BiThrTree pre;/*全局变量*/
void InThreading(BiThrTree p)
{
if(p)
{InThreading(p->lchild);/*左子树线索化*/
if(!p->lchild){p->LTag=Thread;p->lchild=pre;}/*前驱线索*/
if(!pre->rchild){pre->R