文章

14

粉丝

0

获赞

16

访问

912

头像
完全二叉树的判定 细节和模板搞好了就ok 题解:
P3779
发布于2026年2月27日 22:37
阅读数 11

#include<bits/stdc++.h>
using namespace std;
string s; //全局变量
struct Tree{
	char c;
	Tree *lchild, *rchild;
};

void BuildTree(Tree* &T, int n, int &idx)
{
	if(idx >= n) return;
	if(s[idx] == '#')
	{
		T = new Tree; T->lchild = nullptr, T->rchild = nullptr;
		T->c = s[idx];
		return;
	}
	T = new Tree; T->lchild = nullptr, T->rchild = nullptr;  //这里和前面其实可以合并简化一下捏
	T->c = s[idx];
	BuildTree(T->lchild, n, ++idx);
	BuildTree(T->rchild, n, ++idx); //先序建树
}

void BianLi(Tree *T, int n)
{
	bool flag = true;
	queue<Tree*> q; q.push(T);
	while(n --)
	{
		int cnt = q.size(); //层序遍历
		while(cnt --)
		{
			Tree *temp = q.front(); q.pop();
			if(temp->c == '#')
			{
				if(flag){flag = false;}
			}
			else{
				if(!flag){cout << 'N' << '\n'; return;}
				q.push(temp->lchild); q.push(temp->rchild);
			}
		}
	}
	cout << 'Y' << '\n';
	return;
}

int main()
{
	while(cin ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发