1. 算法思想

  1. 采用递归形式
    1. 这样放心把左右子树的查找工作交给计算机
    2. 只用关心匹配根结点和处理左右子树的返回值
  2. 遍历每一个结点
    1. 这里以先序遍历为例
  3. 先为递归设置一个出口
  4. 再尝试匹配根结点
    1. 有就直接返回, ok了, 剩下的交给递归
  5. 处理左右子树的查找结果
    1. 如果左子树找到, 就再算上根结点这一层
    2. 如果右子树找到, 就再算上根结点这一层
  6. 返回处理后的左子树或右子树的递归结果

2. c语言实现

int LevelOfNode(BiTree T, DataType e)
{   // 在二叉树T中查找数据元素e,找到返回该结点的层次
    // 找不到返回0。假定二叉树中没有重复的数据元素
	if(T==NULL)return 0;
    if(T->data==e)return 1;
    int layerL=LevelOfNode(T->LChild, e);
    int layerR=LevelOfNode(T->RChild, e);
    return layerL>layerR?layerL:layerR+1;
}