算法思想:设置一个全局变量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 }
