编程计算二叉树中某结点的层数

题目:编写一个函数:实现在二叉树中查找与字符key内容相同的结点,并返回其在二叉树中的层数。如果二叉树中不存在该结点,则返回-1.

#include "stdio.h"

typedef struct BiTNode{
    char data;   /*结点的数据域*/
    struct BiTNode *lchild , *rchild;  /*指向左孩子和右孩子*/
} BiTNode , *BiTree;

/*创建一棵二叉树*/
void CreatBiTree(BiTree *T){
    char c;
    scanf("%c",&c);
    if(c == ' ') *T = NULL;
    else{
       *T = (BiTNode * )malloc(sizeof(BiTNode));  /*创建根结点*/
        (*T)->data = c;    /*向根结点中输入数据*/
        CreatBiTree(&((*T)->lchild));  /*递归地创建左子树*/
        CreatBiTree(&((*T)->rchild));  /*递归地创建右子树*/
    }
}

int getNodelayer (BiTree T,int level,char key) {
    int l;
    if(T) {   
        if(T->data == key) {
            return level;    /*找到与key值相同的结点,将层数level返回*/
        }  
        l = getNodelayer (T->lchild,level+1,key);  /*在左子树中查找key结点,并得到其层数*/
        if(l != -1) {
            return l;
        } else {
            /*在右子树中查找key结点,并得到其层数*/
            return getNodelayer (T->rchild,level+1,key) ;       
        }        
    }
    return -1;    /*T为NULL,返回-1*/
}


int getBiTreeNodeLayer(BiTree T, char key) {
    int level = 1;
    return getNodelayer(T,level,key);
}
main()
{
   BiTree T = NULL;  /*最开始T指向空*/
   char key;
   int level;
   printf("Input some characters to create a binary tree \n");
   CreatBiTree(&T);  /*创建二叉树*/
   getchar();
   printf("Input the node element in this bitree \n");
   scanf("%c", &key);
   level = getBiTreeNodeLayer(T,key);
   if (level != -1) {
       printf("The element %c is in the level %d in this bitree\n", key,level);
   } else {
        printf("There is no element %c is in this bitree\n",key);
   }
   getchar();
   getchar();
}