頭文件
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
#define OVERFLOW -2
#define OK 1
typedef char TElementType;
typedef int Status;
typedef struct BiTNode{
TElementType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*Bitree;
Status InOrderTraverse(Bitree T, Status(*visit)(TElementType e));
Status CreateBitree(Bitree &T);
Status PrintElement(TElementType e);
#endif // HEAD_H_INCLUDED
.cpp文件
#include<stdlib.h>
#include<stdio.h>
#include"head.h"
Status InOrderTraverse(Bitree T, Status(*PrintElement)(TElementType e)){ //中序遍歷
if (T)
{
InOrderTraverse(T->lchild,PrintElement);
PrintElement(T->data);
InOrderTraverse(T->rchild,PrintElement);
}
}
//------------我是華麗麗的分割線----------------
Status CreateBitree(Bitree &T)//讀入字符並創建二叉樹
{
TElementType ch;
scanf("%c",&ch);
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 PrintElement(TElementType e)//打印數據
{
if (e!='#')
{
printf("%c\t",e);
}
return OK;
}
主函數
#include<stdlib.h>
#include<stdio.h>
#include"head.h"
Status a;
Bitree T;
int main()
{
printf("開始構建完全二叉樹,方法:先序遍歷法。\n請按正確順序完整輸入數據,以井號鍵結束\n");
a=CreateBitree(T);
if (a) printf("創建二叉樹完成\n");
printf("開始以中序遍歷法打印二叉樹\n");
InOrderTraverse(T,PrintElement);
printf("\n打印完畢,程序結束\n");
return 0;
}