我具有以下树结构:
此显示3个级别。我的实际问题将有8到12级。我有以下程序,我相信它将以正确的顺序遍历树。两个子节点向父节点报告。如果我们都认识两个孩子,我们就可以找到父母。本质上,我们想从右到左,从下到上遍历树。数字表示节点的遍历顺序。
我相信这是我的代码可以完成:
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 2; k++)
{
printf("k loop: %d ", i * 7 + j * 3 + k);
}
printf("\n");
printf("j loop: %d \n", i * 7 + j * 3 + 2);
}
printf("i loop: %d \n", i * 7 + 6);
}
printf("final node: %d\n", 2 * 2 * 2 * 2 - 2);
}
这不是很好,也不是很可扩展,因为我需要为每个附加级别添加另一个for循环。
三个问题:
答案 0 :(得分:2)
您可以通过针对p(n, level)
的以下步骤来递归执行此操作:
level > 0
,则首先使用
n = p(n, level - 1)
n = p(n, level - 1)
n
并返回n+1
这是一个幼稚的实现:
#include <stdio.h>
int p(int n, int level) {
if (level > 0) {
n = p(n, level - 1);
n = p(n, level - 1);
}
printf("%i\n", n);
return n + 1;
}
// initial call for a depth of 8:
int main() {
p(0, 8);
return 0;
}
答案 1 :(得分:0)
通常遵循以下算法
Here is a link for more information