首页 > 试题广场 >

小红的完全二叉树构造

[编程题]小红的完全二叉树构造
  • 热度指数:558 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红想构造一个总共 n 个节点完全二叉树,该二叉树满足以下两个性质:
1. 所有节点的权值值为 1 ~ n 的一个排列。
2. 除了根节点以外,每个节点的权值和它父亲的权值的乘积为偶数。

请你帮小红构造出这个二叉树,并按层序遍历的方式打印所有节点。

输入描述:
一个正整数 n,代表二叉树的节点数量。
 


输出描述:
输出一行n个正整数,代表小红构造的二叉树的层序遍历的序列。
示例1

输入

4

输出

2 4 3 1

说明

这棵树的结构如下:

显然,任意节点和它父亲权值的乘积都是偶数
由n个节点组成的二叉树,叶子节点数量是ceil(n/2)
节点编号1到n,奇数数量是ceil(n/2)
如果所有叶子节点都是奇数,它们父节点就必然是偶数。
题面要求给出层序遍历,那么先输出全部偶数再输出全部奇数,即可。
代码如下:
for (int i = 2; i <= n; i += 2) cout << i << ' ';
for (int i = 1; i <= n; i += 2) cout << i << ' ';

发表于 2026-04-19 02:03:03 回复(0)
这个树不是唯一的,输出一种满足题意的就好了
发表于 2026-04-19 16:51:07 回复(0)