(1)二叉树的创建
(2)对进行先,中,后序遍历
#include<iostream>
#include<stdio.h>
using namespace std;
typedef char TElemType;
enum Status { OK = 1,ERROR = 0 };
typedef struct BiTNode{
TElemType data;
struct BiTNode * lchild, * rchild;
}* BiTree,BiTNode;
Status CreateBiTree(BiTree &T) {
char ch;
scanf_s("%c",& ch);
getchar();
if (ch == ' ')T = NULL;
else {
if (!(T = (BiTNode*)malloc(sizeof(BiTNode))))exit (OVERFLOW);
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
Status PreOrderTraverse(BiTree T) {
if (T) {
if(printf("%c ", T->data))
if (PreOrderTraverse(T->lchild))
if (PreOrderTraverse(T->rchild))return OK;
return ERROR;
}
else return OK;
}
Status InOrderTraverse(BiTree T) {
if (T) {
if (PreOrderTraverse(T->lchild))
if(printf("%c ", T->data))
if (PreOrderTraverse(T->rchild))return OK;
return ERROR;
}
else return OK;
}
Status PostOrderTraverse(BiTree T) {
if (T) {
if (PreOrderTraverse(T->lchild))
if (PreOrderTraverse(T->rchild))
if (printf("%c ", T->data))return OK;
return ERROR;
}
else return OK;
}
int main()
{
BiTree T;
CreateBiTree(T);
PreOrderTraverse(T);
printf("\n");
InOrderTraverse(T);
printf("\n");
PostOrderTraverse(T);
return 0;
}