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