以二叉链表为存储结构,分别写出在二叉树中查找值为x的结点及求X所在结点在树中层数的算法。
#define M10 //假设二叉树的层数最多为10 BinTree SearchBTree(BinTree*T,DataType x) { //以前序遍历算法查找值为X的结点 if(*T) { if((*T)一>data==X)return*T; SearchBTree(&(*T)一>lchild,x); SearchBTree(&(*T)一>rchild,x); } } int InLevel(BinTree T,DataType x) { int static 1=0; //设一静态变量保存层数 if(T) { if(1==0) //若是访问根结点 { 1++; //第1层 if(T一>data==x)return l; if(T一>lchild∣∣T一>rchild) 1++; //若根有子树,则层数加1 } else //访问子树结点 { if(T一>data==x)return l; if(T一>lchild ∣∣ T一>rchild) l++; //若该结点有子树,则层数加1 else return 0; } InLevel(T一>lchild,X); //遍历左子树 InLevel(T一>rchild,x); //遍历右子树 } }