/*
*Copyright (c)2015, 烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:Graph.cpp
*作 者:苏凯祺
*完成日期:2014年12月18号
*版 本 号:v1.0
*问题描述:假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试:
(4)设计一个算法Level(b,x,h),返回二叉链b中data值为x的节点的层数。
*btreee.h见算法库
*/
#include <stdio.h>
#include "btree.h"
int Level(BTNode *b,ElemType x,int h)
{
int l;
if (b==NULL)
return 0;
else if (b->data==x)
return h;
else
{
l=Level(b->lchild,x,h+1);
if (l==0)
return Level(b->rchild,x,h+1);
else
return l;
}
}
int main()
{
BTNode *b;
CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
printf("值为\'K\'的节点在二叉树中出现在第 %d 层上n",Level(b,'K',1));
DestroyBTNode(b);
return 0;
}
运行结果: