题目描述
从键盘接收扩展先序序列,以二叉链表作为存储结构,建立二叉树。按先序遍历次序输出各结点的内容及相应的层次数,要求以二元组的形式输出,其所对应的输出结果为:(data,level)
data是二叉树结点数据域值,level是该结点所在的层次。
设根节点在第一层。
输出的元素间不用间隔,()都是英文字符
样例输入 Copy
AB#DG###CE##FH###
样例输出 Copy
(A,1)(B,2)(D,3)(G,4)(C,2)(E,3)(F,3)(H,4)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node{
char data;
struct Node* Lchild;
struct Node* Rchild;
}BiTNode, *BiTree;
void PreOrder(BiTree root, int n)
{
if(root)
{
printf("(%c,%d)", root->data, n);
PreOrder(root->Lchild, n+1);
PreOrder(root->Rchild, n+1);
}
}
void CreateBiTree(BiTree *root)
{
char ch;
ch = getchar();
if(ch == '#')
*root = NULL;
else
{
(*root) = (BiTree)malloc(sizeof(BiTNode));
(*root)->data = ch;
CreateBiTree(&((*root)->Lchild));
CreateBiTree(&((*root)->Rchild));
}
}
int main()
{
BiTree root;
CreateBiTree(&root);
PreOrder(root, 1);
return 0;
}