4~10点MLE 求大佬救救
查看原帖
4~10点MLE 求大佬救救
447562
像素旋转楼主2021/2/2 16:13
#include<iostream>
#include<stack>
#include<queue>
using namespace std;
struct tree {
	char letter;
	tree* lp;
	tree* rp;
};
int main(void)
{
	int n;
	cin >> n;//结点数
	queue<char> que;
	queue<tree*>que2;
	tree* root = new tree;//根节点
	root->lp = NULL;
	root->rp = NULL;
	tree* p = root;
	cin >> p->letter;
	que.push(p->letter);
	que2.push(p);
	int flag = 0;
	while (!que.empty()) {
		if(flag)//第一次就不多输入了
		cin >> p->letter;
		if (p->letter == que.front())
			que.pop();//第一次一定会消除
		p->lp = new tree;
		cin >> p->lp->letter;
		if (p->lp->letter != '*') {
			que.push(p->lp->letter);
			que2.push(p->lp);
		}
		p->rp = new tree;
		cin >> p->rp->letter;
		if (p->rp->letter != '*') {
			que.push(p->rp->letter);
			que2.push(p->rp);
		}
		flag=1;
		que2.pop();//处理指针
		if(!que2.empty())
		p = que2.front();
	}
	//完成输入
	p = root;
	stack<tree*> stk1;//控制前序遍历
	stk1.push(p);
	while (!stk1.empty()) {
		tree* q=p;
		cout << q->letter;
		if (q->rp->letter != '*')
			stk1.push(q->rp);
		if (q->lp->letter != '*')
			q = q->lp;
		else{
			q = stk1.top();
			stk1.pop();
		}
		p = q;
	}
	return 0;
}
2021/2/2 16:13
加载中...