题目描述
小红想构造一个总共 n 个节点完全二叉树,该二叉树满足以下两个性质:
1. 所有节点的权值值为 1 ~ n 的一个排列。
2. 除了根节点以外,每个节点的权值和它父亲的权值的乘积为偶数。
请你帮小红构造出这个二叉树,并按层序遍历的方式打印所有节点。
输入描述:
一个正整数 n,代表二叉树的节点数量。2≤n≤10^5;
输出描述:
输出一行n个正整数,代表小红构造的二叉树的层序遍历的序列。
输入
4
输出
2 4 3 1
说明
这棵树的结构如下:
显然,任意节点和它父亲权值的乘积都是偶数。
#include<iostream>
#include<algorithm>
using namespace std;
void solve() {
int n, i, j;
cin>>n;
for (i = 2; i <= n; i += 2) {
cout<<i<<' ';
}
for (i = 1; i <= n; i += 2) {
cout<<i<<' ';
}
cout<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T = 1;
while (T--) {
solve();
}
return 0;
}