假设已经建立好二叉树,知道二叉树的前序序列,要输出前序序列中第k(1<=k<=n)个结点中的数据应该怎么操作?
此次测试用的是三层满二叉树,层次遍历序列为ABCDEFG
总体思路就是递归的去前序遍历二叉树,设置一个全局变量i,每过一个结点就+1当作计数器,等i==k时返回那个结点的值,思路很简单但在递归这个问题上懵了。
建立二叉树沿用之前【已知前序中序创建二叉树】的代码简历,经过几次试错……终于写出了一个函数。
先贴上主函数:
void main(){
BiTree T;
char ch;
char A[7]={'A','B','D','E','C','F','G'};
char B[7]={'D','B','E','A','F','C','G'};
T=PreInCreat(A,B,0,6,0,6);//到此处均为创建二叉树
//ch=FINDK(T,4);
//cout<<"第N个结点数据是:"<<ch<<endl;//以K为4
FindK(T,4);
system("pause");
}
(被//的两条语句是用来配合课本方法输出用的)
①课本上的FINDK():
解释在代码注释中
char FINDK(BiTree P,int k){
char c