一、上机实验的问题和要求:
建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。
二、程序设计的基本思想,原理和算法描述:
首先创建一个二叉树BiTree,然后分别对二叉树进行先序遍历、中序遍历、后序遍历,最后得出结果并输出。
三、调试和运行程序过程中产生的问题及采取的措施:
调试程序时未发现错误
四、源程序及注释
#include<iostream>
using namespace std;
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode ,*BiTree;
BiTree creatbitree()
{
BiTree T;
int p;
scanf( "%d",&p);
if(p== 0)
T= NULL;
else
{
T=(BiTNode * )malloc( sizeof(BiTNode));
T->data=p;
T->lchild=creatbitree();
T->rchild=creatbitree();
}
return T;
}
//先序遍历
void preOrder(BiTree T)
{
if(T!= NULL)
{
printf( "%d ",T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}
//中序遍历
void inOrder(BiTree T)
{
if(T!= NULL)
{
inOrder(T->lchild);
printf( "%d ",T->data);
inOrder(T->rchild);
}
}
//后序遍历
void postOrder(BiTree T)
{
if(T!= NULL)
{
postOrder(T->lchild);
postOrder(T->rchild);
printf( "%d ",T->data);
}
}
int main()
{
BiTree P;
P=creatbitree();
printf( "先序遍历:\n");
preOrder(P);
printf( "\n中序遍历:\n");
inOrder(P);
printf( "\n后序遍历:\n");
postOrder(P);
printf( "\n");
return 0;
}
五、运行结果