33,008
社区成员
发帖
与我相关
我的任务
分享
typedef struct Node{
char data;
struct Node* lchild;
struct Node* rchild;
}bt,* pbt; //binary tree node
void create(pbt * bt) //创建二叉树
{
char ch;
ch=getchar();
if(ch=='.')(*bt)=NULL;
else
{
(*bt)=(pbt)malloc(sizeof(bt));
(*bt)->data=ch;
create(&((*bt)->lchild));
create(&((*bt)->rchild));
}
}
void printree(pbt bt,int nlayer) //按竖向树状打印的二叉树
{
int i;
if( bt==NULL ) return;
printree( bt->rchild,nlayer+1 );
for( i=0 ; i<nlayer ; i++ )
printf(" ");
printf("%c\n",bt->data); //按逆中序输出结点,用层深决定的左右位置
printree( bt->lchild,nlayer+1 );
}
#include <stdio.h>
#include <stdlib.h>
#include "tree_binary.h"
int main()
{
pbt r;
printf("Please enter a preorder sequence (eg:ABC..DE.G..F...)\n");
create(&r);
printree( r,0 );
system("pause");
return 0;
}
void create(pbt * tree) //创建二叉树
{
char ch;
ch=getchar();
if(ch=='.')(*tree)=NULL;
else
{
(*tree)=(pbt)malloc(sizeof(bt));
(*tree)->data=ch;
create(&((*tree)->lchild));
create(&((*tree)->rchild));
}
}