#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MS 50
struct BTreeNode
{
char date;
struct BTreeNode *lchild;
struct BTreeNode *rchild;
};
typedef struct BTreeNode TNODE;
TNODE *creat(int n)
{
int i,j;
char x;
TNODE *narr[100],*p,*t;
for(j=1;j<=n;j++)
{
printf("input i,x:\n");
scanf("%d,%c",&i,&x);
p=(TNODE*)malloc(sizeof(TNODE));
p->date=x;
p->lchild=NULL;
p->rchild=NULL;
narr[i]=p;
if(i==1)
t=p;
else
{
if(i%2==0)
narr[i/2]->lchild=p;
else
narr[i/2]->rchild=p;
}
}
return(t);
}
void Preorder(struct BTreeNode *BT)
{
if(BT!=NULL)
{
printf("%5c", BT->date);
Preorder(BT->lchild);
Preorder(BT->rchild);
}
}
void Inorder(struct BTreeNode *BT)
{
if(BT!=NULL)
{
Inorder(BT->lchild);
printf("%5c", BT->date);
Inorder(BT->rchild);
}
}
void Postorder(struct BTreeNode *BT)
{
if(BT!=NULL)
{
Postorder(BT->lchild);
Postorder(BT->rchild);
printf("%5c", BT->date);
}
}
void PreorderN(struct BTreeNode *BT)
{
struct BTreeNode *s[20];
int top=-1;
struct BTreeNode *p=BT;
while(top!=-1||p!=NULL)
{
while(p!=NULL)
{
top++;
s[top]=p;
printf("%5c",p->date);
p=p->lchild;
}
if(top!=-1)
{
p=s[top];
top--;
p=p->rchild;
}
}
}
void InorderN(struct BTreeNode *BT)
{
struct BTreeNode *s[20];
int top=-1;
struct BTreeNode *p=BT;
while(top!=-1||p!=NULL)
{
while(p!=NULL)
{
top++;
s[top]=p;
p=p->lchild;
}
if(top!=-1)
{
p=s[top];
top--;
printf("%5c",p->date);
p=p->rchild;
}
}
}
void PostorderN(struct BTreeNode *BT)
{
struct BTreeNode *s[20];
int top=-1,flag=1;
struct BTreeNode *p=BT,*q;
do{
while(p!=NULL)
{
top++;
s[top]=p;
p=p->lchild;
}
q=NULL;
flag=1;
while(top!=-1&&flag)
{
p=s[top];
if(p->rchild==q)
{
printf("%5c",p->date);
top--;
q=p;
}
else
{
p=p->rchild;
flag=0;
}
}
}while(top!=-1);
}
void main()
{
TNODE *t;
int a;
printf("input the number of BTreeNode\n");
scanf("%d",&a);
t=creat(a);
printf("中序遍历:");
Inorder(t);
printf("\n");
InorderN(t);
printf("\n");
printf("先序遍历:");
Preorder(t);
printf("\n");
PreorderN(t);
printf("\n");
printf("后序遍历:");
Postorder(t);
printf("\n");
PostorderN(t);
printf("\n");
}
没有合适的资源?快使用搜索试试~ 我知道了~
初学C语言必须掌握的一些基础知识,包括直接选择排序、直接插入排序、冒泡排序、快速排序。 查找算法,二叉排序树,二叉树层次遍历,二叉树非递归遍历,二叉树的建立,关键字匹配查找等。 如有问题,可随时私信。 初学C语言必须掌握的一些基础知识,包括直接选择排序、直接插入排序、冒泡排序、快速排序。 查找算法,二叉排序树,二叉树层次遍历,二叉树非递归遍历,二叉树的建立,关键字匹配查找等。 如有问题,可随时私信。 初学C语言必须掌握的一些基础知识,包括直接选择排序、直接插入排序、冒泡排序、快速排序。 查找算法,二叉排序树,二叉树层次遍历,二叉树非递归遍历,二叉树的建立,关键字匹配查找等。 如有问题,可随时私信。
资源推荐
资源详情
资源评论
收起资源包目录
二叉树非递归遍历.rar (1个子文件)
二叉树非递归遍历.c 2KB
共 1 条
- 1
资源评论
嘻嘻爱编码
- 粉丝: 994
- 资源: 241
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功