二叉树顺序存储的前序遍历
输入数据有两行,第一行为一个正数n(n<=100),表示该二叉树的节点个数。 接下来有n个字符,表示各个位置上的元素,当字符为'#'时表示当前节点为空。
#include <stdio.h>
#include <malloc.h>
#include<string.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void create(char *tree,int i,int n,BiTree & T)
{
if(tree[i]=='#' ||i>=n) T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=tree[i];
create(tree,2*i+1,n,T->lchild);
create(tree,2*i+2,n,T->rchild);
}
}
void PreOrderTraverse(BiTree T)
{
if(T==NULL)return;
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
int main()
{
BiTree T;
int n;
char tree[101];
gets(tree);
n=strlen(tree);
create(tree,0,n,T);
PreOrderTraverse(T);
printf("\n");
return 0;
}