nyoj1063已知树的先序,求第n层的所有值(坑,注意可能为负)

<pre class="cpp" name="code">
样例输入<dd><pre id="sample_input">2
1 2 # # 3 # # @ 1
5 7 3 # # # 4 # # @ 3
样例输出
1
3

已知前序求@后面的第n层树的值;

注意节点值可能为负数,略坑,然后不用建树,存一个数组里就好了,记录一下深度就好,代码如下:

 
  
 
 
<pre class="cpp" name="code">
 
 
<pre class="cpp" name="code">
 
 
<pre class="cpp" name="code">
 
 
<pre class="cpp" name="code">#include<string>
#include<iostream>
using namespace std;
	string s;
	int now;
	int count;
struct node{
	int deep;
	int l,r;
	string val;
}t[30005];
void build(int root,int deep,string val){
	t[root].val=val;
	t[root].deep=deep;
	string s;
	cin>>s;
	if (s!="#") {
		build(count++,deep+1,s);
	}
	cin>>s;
	if (s!="#") {
		build(count++,deep+1,s);
	}
	return ;
}
int main(){
	int T;
	cin>>T;
	string n;
	char c;
	while(T--){
		count=1; 
		for (int i=0;i<30005;i++) t[i].deep=0;
		cin>>n;
		build(count++,1,n);
		cin>>c;
		int nn;
		cin>>nn;
		bool f=true;
		for (int i=0;i<count;i++) if (t[i].deep==nn) {
			if (f){
				cout<<t[i].val;
				f=false;		
			}
			else cout<<"~"<<t[i].val;
		}
		cout<<endl;
	}
}

 
  




你可能感兴趣的:(数据结构,二叉树)