输出二叉树前序序列中的第K个结点内容&测试

本文介绍如何在已知二叉树前序序列的情况下,找到并输出序列中的第K个节点。以三层满二叉树为例,通过前序遍历和递归实现,使用全局变量作为计数器,当计数器等于K时输出对应节点的值。文中还讨论了错误的实现方式及改进方法。
摘要由CSDN通过智能技术生成

假设已经建立好二叉树,知道二叉树的前序序列,要输出前序序列中第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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值