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