编写递归算法,求在二叉树中先序序列中第k个位置的节点

编写递归算法,求在二叉树中先序序列中第k个位置的节点

#include<stdio.h>//freopen()的头文件
#include<malloc.h>
#include<iostream>
using namespace std;
const int N=1000;
struct node{
	char info;
	struct node *llink,*rlink;
};
typedef struct node NODE;
NODE *creat(){   //先序创建树
	char x;
	NODE *p;
      scanf("%c",&x);
	//printf("%c",x);
	if(x!='.')
	{
		p=(NODE *)malloc(sizeof(NODE));
		p->info=x;
		p->llink=creat();
		p->rlink=creat();
	 }
	else
		p=NULL;
	
	return p;
}

char a[N];//注意information是char类型的
int i=1;//主函数和这个函数都要用 放在这个函数之前即可
void run(NODE *t) //先序遍历,然后建立结果存入char a[N]中
{ 
	if(t)
	{
 		a[i] =t->info;
		i++;
		run(t->llink);
		run(t->rlink);
	}
}

main()
{
	NODE *T;
	int k;
	freopen("a.txt","r",stdin);//打开文zhu件//https://blog.csdn.net/yzl_rex/article/details/6892059
	scanf("%d",&k); 
	getchar();//c语言如果自动接受的话会接受一个回车或空格
	
	printf("PLease input a tree:\n");
    T=creat();//或者k可以在字符串后面接受
                //T是一个指针

	if(!T)
		printf("This is a empty binary tree.");
	else
	    { 
            printf("第k个位置的节点 is:\n ");
		    run(T);
		    printf("%c",a[k]);
		}
     return 0;
}

 

 

 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值