tree.h
#include
#include
#define MAX_NODE 50
typedef struct BiTNode
{
char data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree();
void InorderTraverse( BiTree T);
creatTree.cpp
#include"tree.h"
BiTree CreateBiTree()
{
BiTree T;
char ch;
scanf("%c",&ch);
if (ch=='#')
{
T=NULL;
return T;
}
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
if (T==NULL)
{
printf("树创建失败!");
T=NULL;
return T;
}
T->data=ch;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
return T;
}
}
InorderTraverse.cpp
#include"tree.h"
void InorderTraverse( BiTree T)
{
BiTree stack[MAX_NODE] ,p=T ;
int top=0 , bool1=1 ;
if (T==NULL)
printf("Binary Tree is Empty!\n");
else
{
do
{
while (p!=NULL)
{
stack[++top]=p ;
p=p->lchild ;
}
if (top==0)
{
bool1=0 ;
}else{
p=stack[top] ;
top-- ;
printf("%c",p->data);
p=p->rchild ;
}
} while (bool1!=0) ;
}
}
main_fun.cpp
#include"tree.h"
int main()
{
BiTree T= CreateBiTree();
InorderTraverse(T);
return 0;
}
traverse.cpp
#include"tree.h"
void PreorderTraverse(BiTree T)
{
if (T!=NULL)
{
/* 访问根结点 */
PreorderTraverse(T->lchild) ;
printf("%c",T->data);
PreorderTraverse(T->rchild) ;
}
}
例如 输入 AB###
输出BA
先序输入 中序输出
可以修改遍历方式 来改变输出结果。
你这个问题不对吧?任意输入二叉树的结点个数和结点值,可能能构造很多种二叉树