發布時間:2011-09-16 共5頁
二叉樹的一般操作,實現了下:
主要練習了二叉樹的非遞歸遍歷,利用棧,和隊列來完成。算法思想,沒描述清楚,表達能力很差...崩潰....
代碼
#include "stdio.h"
#include "malloc.h"
#define MAXSIZE 20
//二叉樹結點的結構體表示形式
typedef struct node
{
char data;
struct node* left,*right;
}BTree;
//棧的結構體表示形式
typedef struct stackelem
{
BTree* a[MAXSIZE];
int top;
}Stack;
//隊列的結構體的表示形式
typedef struct queueelem
{
BTree* b[MAXSIZE];
int front,rear;
}Queue;
//創建二叉樹,利用遞歸的方法
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);
}
}