我正在尝试制作一个简单的树浏览脚本,以打印所有叶子。但是我看到的不是我期望的。
在这个玩具示例中,每个节点代表一个字符串并有4个子节点,并坚持将A,B,C或D附加到父字符串上。
E.g for max_depth = 2:
""
A B C D
AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
我的代码:
void explore_tree(string sequence, int depth, int max_depth) {
if (depth == max_depth) {
cout << sequence << endl;
return;
}
explore_tree(sequence.append("A"), depth+1, max_depth);
explore_tree(sequence.append("B"), depth+1, max_depth);
explore_tree(sequence.append("C"), depth+1, max_depth);
explore_tree(sequence.append("D"), depth+1, max_depth);
}
explore_tree("", 0, 2);
基本上,当我达到max_depth时,我将打印序列。 否则我会递归地将A,B,C或D附加到当前序列中
我希望看到叶子列表,但是我看到了更多串联的东西:
AA
AAB
AABC
AABCD
ABA
ABAB
ABABC
ABABCD
ABCA
ABCAB
ABCABC
ABCABCD
ABCDA
ABCDAB
ABCDABC
ABCDABCD
我想念什么吗?我看不到为什么这不能输出预期的结果。