编写函数先根序输出该树各元素结点的值。
注意:答案输出时每个元素后面加一个空格
函数接口定义:
void PreRootTraverse(CSTree CST);
其中 T是用户传入的参数,表示二叉树根节点的地址。
每行给出不多于N(N<31)个数,对应一棵树。
裁判测试程序样例:
//头文件包含
#include<iostream>
#include<malloc.h>
#include<stdio.h>
using namespace std;
//函数状态码定义
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define INFEASIBLE -2
#define NULL 0
typedef int Status;
char s[31];
int cnt=0;
//二叉链表存储结构定义
typedef char TElemType;
typedef struct CSNode
{
TElemType data;
struct CSNode *firstchild;
struct CSNode *nextsibling;
}CSTNode,*CSTree;
Status CreateCSTree(CSTree &CST)
{
TElemType e;
e=s[cnt++];
if(e=='*')
CST=NULL;
else
{
CST=(CSTNode*)malloc(sizeof(CSTNode));
if(!CST)
exit(OVERFLOW);
CST->data=e;
CreateCSTree(CST->firstchild);
CreateCSTree(CST->nextsibling);
}
return OK;
}
//下面是需要实现的函数的声明
void PreRootTraverse(CSTree CST);
//下面是主函数
int main()
{
CSTree CST;
while(cin>>s)
{
CreateCSTree(CST);
if(!CST)
cout<<"NULL ";
PreRootTraverse(CST);
cout<<endl;
cnt=0;
}
return 0;
}
/* 请在这里填写答案 */
输入样例:
ABH**CE*FG***D***
*
AB*C*D***
输出样例:
数字间有1个空格
A B H C E F G D
NULL
A B C D
// 前序遍历二叉树的函数实现
void PreRootTraverse(CSTree CST)
{
if (CST == NULL)
return;
cout << CST->data << " ";
PreRootTraverse(CST->firstchild);
PreRootTraverse(CST->nextsibling);
}