代码1:
void getLevel(BTNode *t,int level,char x,int *p)//用level记录当前访问层数,用p记录结点所在层数;
{
if(t)
{
level++;
if(t->data==x)
{
*p=level;
}
getLevel(t->lchild,level,x,p);
getLevel(t->rchild,level,x,p);
}
}
代码2:
int L=1;//L是全局变量,初值为1,用来记录当前所访问的结点层号
void getLevel1(BTNode *p,char x){
if(p){
if(p->data==x){
cout<<L<<endl;
}
++L;//p指针要进入下一层,所以自增1
getLevel1(p->lchild,x);
getLevel1(p->lchild,x);
--L;// p指针要从下一层返回到上一层,所以要自减1
}
}
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数学函数,求平方根、三角函数、对数函数、指数函数...
#define MAXSIZE 100
//用于使用c++的输出语句
#include<iostream>
using namespace std;
typedef struct BTNode
{
char data;
struct BTNode *lchild;
stru