Description
设二叉树的存储结构为二叉链表。在二叉链表中的每个结点由三部分组成:左孩子指针、右孩子指针和结点数据,其中如果一个结点的左右孩子不存在,则对应的指针记录为空,空指针用字符^占位。
Input
输入包括两行:
第一行:一棵非空的二叉树,每棵二叉树按先序遍历形式,空指针用字符^占位。
第二行:要查找的指定结点
测试时,每棵树不会超过20个结点。Output
返回指定结点所在的层次,如果没找到该结点返回0。
Sample Input
ABD^^^CE^^F^^ CSample Output
2
#include<stdio.h>
#include<malloc.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree()
{
char e;
BiTree T;
scanf("%c",&e);
if(e=='^')
T=NULL;
else
{
T=(BiTNode*)malloc(sizeof(BiTNode));
if(!T)
return 0;
T->data=e;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
}
return T;
}
int Zkx(BiTree T,int L,char e,int *t)
{
if(T)
{
L++;
if(T->data==e)
{
*t=L;
}
Zkx(T->lchild,L,e,t);
Zkx(T->rchild,L,e,t);
}
}
int main()
{
int t=0;
BiTree T;
T=CreateBiTree();
char ch;
getchar();
scanf("%c",&ch);
Zkx(T,0,ch,&t);
printf("%d",t);
return 0;
}