前言
王道归纳习题
正文
题目一
计算指定结点*p所在的层次
说到找层次,第一个想到的是层序遍历,但这个用递归来写就简单很多,还有一个就是,找层次和计算二叉树的深度有类似,需要加了一个判断两结点是否相等的判断条件。
递归
int getLever(BiTree T,BiTNode *p){
if(T==NULL) return 0;
if(T->data==p->data) return 1;//如果相等,返回第一层
int l=getLever(T->lchild);
int r=getLever(T->rchild);
if(l||r){//注意这个,只有当在树中找到P时才进入
if(l>r)
return l+1;
else
return r+1;
}
}
题目二
以先序序列输出一颗二叉树中所有结点的数据值及结点所在的层次
虽然代码不长,但写的时候就没想到这样,还是要多加练习
void PreAndLevel(BiTree T, int i)
{
if (T == NULL) return;
printf("data=%d,level=%d", T->data, i);
PreAndLevel(T->lchild, i + 1);
PreAndLevel(T->rchild, i + 1);
}