#include <iostream>
int n, tree[1050];
void BuildTree(int node, int l) {
if (node > n) {
return;
}
tree[node] = l;
BuildTree(node * 2, l + 1);
BuildTree(node * 2 + 1, l + 1);
}
void DepthFirstSearch1(int node) {
std::cout << tree[node] << ' ';
if (node * 2 <= n) {
DepthFirstSearch1(node * 2);
}
if (node * 2 + 1 <= n) {
DepthFirstSearch1(node * 2 + 1);
}
}
void DepthFirstSearch2(int node) {
if (node * 2 <= n) {
DepthFirstSearch2(node * 2);
}
std::cout << tree[node] << ' ';
if (node * 2 + 1 <= n) {
DepthFirstSearch2(node * 2 + 1);
}
}
void DepthFirstSearch3(int node) {
if (node > n) {
return;
}
if (node * 2 <= n) {
DepthFirstSearch3(node * 2);
}
if (node * 2 + 1 <= n) {
DepthFirstSearch3(node * 2 + 1);
}
std::cout << tree[node] << ' ';
}
int main() {
std::cin >> n;
BuildTree(1, 1);
DepthFirstSearch1(1);
std::cout << std::endl << std::endl;
DepthFirstSearch1(2);
std::cout << std::endl << std::endl;
DepthFirstSearch1(3);
return 0;
}
二叉树的构建与遍历,求指出问题在哪