算法思想:设置一个全局变量i记录已经访问过的节点,当二叉树为空时返回特殊字符'#',当i=k,时,表示已经找到满足条件的结点,返回

b->data;当i!=k时,遍历其左子树,若找到返回其值,否则在右子树中查找。

代码如下:

 1 int i=1;      //全局变量,用于记录访问结点个数
 2 ElemType PreNode(BiTree b,int k)
 3 {
 4     if(b==null)    //空结点,返回特殊字符
 5         return '#';
 6     if(i==k)      //相等,返回当前结点值
 7         return b->data;
 8     i++;   //访问节点数加一
 9     ch=PreNode(b->lchild,k);   //访问左子树
10     if(ch!='#')   //存在于左子树中,返回该值
11         return ch;
12     ch=PreNode(b->rchild,k);   //存在于右子树中,返回元素
13         return ch;
14 }