求C语言二叉树题代码!!!急

已知先序和中序构造二叉树,并输出节点内容。

第1个回答  2010-05-23
先序输入 如 abc##d##e## (#表示空)
输出 cbdae
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#include "cstdlib"
#include "malloc.h"
typedef int Status;
typedef char TElemType;
#include <stdio.h>
#include <iostream>
using namespace std;
typedef struct BiTNode { // 结点结构
TElemType data;
struct BiTNode *lchild, *rchild; // 左右孩子指针
} BiTNode, *BiTree;
Status CreateBiTree(BiTree &T){//构造二叉树
TElemType ch;
scanf("%c",&ch);
if(ch=='#') T=NULL;
else{
if(!(T=(BiTree)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}//CreateBiTree
Status Visit(char Data)
{
printf("%c",Data);
return OK;
}
Status InOrderTraval(BiTree pTree)
{
if(pTree)
{
if(InOrderTraval(pTree->lchild))
{
if(Visit(pTree->data))
{
if(InOrderTraval(pTree->rchild))
{
return OK;
}
}
return ERROR;
}
return ERROR;
}
else
{
return OK;
}
}
Status v(char a)
{
printf("%c",a);
return OK;
}
void main()
{
BiTree A,b;
printf("先序输入,空用 # 表示:\n");
CreateBiTree(A);
b=A;
printf("中序输出:\n");
InOrderTraval(b);
} 1
相似回答
大家正在搜