算法思想:設置一個全局變量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 }