当前位置:首页 » 编程软件 » 编程树的遍历

编程树的遍历

发布时间: 2023-08-15 14:25:01

1. 编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~

#include<stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define OK 1
#define ERROR 0
#define OVERFLOW 0

typedef char TElemType;
typedef int Status;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef enum {Link,Thread} PointerTag;
typedef struct BiThrNode
{
TElemType data;
struct BiThrNode *lchild,*rchild;
PointerTag LTag,RTag;
}BiThrNode;
typedef BiThrNode *BiThrTree;

BiTree CreateBiTree(BiTree T) //先序遍历构造二叉树
{
char ch;
scanf("%c",&ch);
if(ch=='#') //#代表空指针
T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode)); //申请结点
if(!T)
exit(OVERFLOW);
T->data=ch; //生成根结点
T->lchild=CreateBiTree(T->lchild); //构造左子树
T->rchild=CreateBiTree(T->rchild); //构造右子树
}
return T;
}

Status InOrderTraverse(BiTree T,Status(*visit)(TElemType))
{//中序遍历二叉树
if(T)
{
if(InOrderTraverse(T->lchild,visit))
if(visit(T->data))
if(InOrderTraverse(T->rchild,visit))
return OK;
return ERROR;
}
else
return OK;
}

Status PrintElement(TElemType e)
{
printf("%-2c",e);
return OK;
}

void main()
{
BiTree T=NULL;
printf("请输入构造二叉树的字符序列:");
T=CreateBiTree(T);
if(T)
printf("二叉树建立成功! ");
else
printf("二叉树构造失败!!! ");
printf("中序遍历二叉树:");
InOrderTraverse(T,PrintElement);
printf(" ");
}

2. 急求C语言写二叉树的遍历

下面是一个用
递归方法
编的二叉树遍历程序,供lz参考。
#include
<stdio.h>//头文件
#include
<stdlib.h>
#include
<malloc.h>
typedef
struct
bitnode
{
char
data;
struct
bitnode
*lchild,*rchild;
}
bitnode,*bitree;//定义结点类型
bitree
createbitree()//创建树
{
char
p;bitree
t;
scanf("%c",&p);
if(p=='
')
t=null;
else
{
t=(bitnode
*)malloc(sizeof(bitnode));//为结点开辟空间
t->data=p;
t->lchild=createbitree();
t->rchild=createbitree();
}
return
(t);
}
void
preorder(bitree
t)//
先序
{
if(t!=null)
{
printf("%c",t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
void
inorder(bitree
t)//
中序
{
if(t!=null)
{
inorder(t->lchild);
printf("%c",t->data);
inorder(t->rchild);
}
}
void
postorder(bitree
t)//
后序
{
if(t!=null)
{
postorder(t->lchild);
postorder(t->rchild);
printf("%c",t->data);
}
}
void
main()//主函数
{
bitree
ta;
ta=createbitree();
printf("先序遍历:");
printf("\n");
preorder(ta);
printf("\n");
printf("中序遍历:");
printf("\n");
inorder(ta);
printf("\n");
printf("后序遍历:");
printf("\n");
postorder(ta);
}

热点内容
锐捷源码 发布:2025-03-18 03:26:55 浏览:435
诉讼中止裁定后可否解压 发布:2025-03-18 03:24:51 浏览:127
sqlserver全文搜索 发布:2025-03-18 03:23:58 浏览:714
u盘里面文件夹没有了 发布:2025-03-18 03:22:19 浏览:227
华为p系列手机哪个配置好 发布:2025-03-18 03:20:13 浏览:620
易语言连接access数据库 发布:2025-03-18 03:12:48 浏览:659
苗木源码 发布:2025-03-18 03:12:38 浏览:746
oracle卸载数据库 发布:2025-03-18 03:05:15 浏览:45
编译时生成固件怎么办 发布:2025-03-18 03:04:30 浏览:705
c语言breakcontinue 发布:2025-03-18 02:52:41 浏览:163