發(fā)布時(shí)間:2011-09-16 共5頁
二叉樹的一般操作,實(shí)現(xiàn)了下:
主要練習(xí)了二叉樹的非遞歸遍歷,利用棧,和隊(duì)列來完成。算法思想,沒描述清楚,表達(dá)能力很差...崩潰....
代碼
#include "stdio.h"
#include "malloc.h"
#define MAXSIZE 20
//二叉樹結(jié)點(diǎn)的結(jié)構(gòu)體表示形式
typedef struct node
{
char data;
struct node* left,*right;
}BTree;
//棧的結(jié)構(gòu)體表示形式
typedef struct stackelem
{
BTree* a[MAXSIZE];
int top;
}Stack;
//隊(duì)列的結(jié)構(gòu)體的表示形式
typedef struct queueelem
{
BTree* b[MAXSIZE];
int front,rear;
}Queue;
//創(chuàng)建二叉樹,利用遞歸的方法
BTree* Create()
{
char ch;
scanf_s("%c",&ch);
getchar();
if (ch=='#')
{
return NULL;
}
else
{
BTree* btree=(BTree*)malloc(sizeof(BTree));
if (NULL==btree)
{
return NULL;
}
btree->data=ch;
btree->left=Create();
btree->right=Create();
return btree;
}
}
//前序遍歷,遞歸的方法
void Preorder(BTree* bt)
{
if (NULL!=bt)
{
printf("%c ",bt->data);
Preorder(bt->left);
Preorder(bt->right);
}
}