递归输出先序序列第k个节点值
忽然想自己也当一个小博主,来这里一年多了同时也是来大学计算机专业一年多了,从CSDN中学习了不少,所以我决定让CSDN来见证我的成长,把我的作业答案都放在这里吧,需要的童鞋们自取哈!有问题欢迎私聊评论嗷!
那么先来第一题!!!
- 【问题描述】编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。
【输入形式】以井号作为空树,输入一个序列,按照先序方式构建一颗二叉树,输入一个整数k
【输出形式】输出先序序列中第k个位置的元素值
【样例输入】ABD##E##C##
5
【样例输出】C
#include<iostream>
using namespace std;
struct node{
char ch;
node *lchild;
node *rchild;};
node *create(struct node *p)
{
char c;
cin>>c;
if(c=='#')p=NULL;
else{
p=new node;
p->ch=c;
p->lchild=create(p->lchild);
p->rchild=create(p->rchild);
}
return p;
}
int n=0;
void trave(node *p,int k)
{
if(p!=NULL)
{
++n;
if(k==n)
{
cout<<p->ch;
return;
}
trave(p->lchild,k);
trave(p->rchild,k);
}
}
int main()
{
int k;
node *p=new node;
p=NULL;
p=create(p);
cin>>k;
trave(p,k);
return 0;
}