从树上生成所有叶子

时间:2019-02-08 13:25:25

标签: c++ tree depth-first-search

我正在尝试制作一个简单的树浏览脚本,以打印所有叶子。但是我看到的不是我期望的。

在这个玩具示例中,每个节点代表一个字符串并有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

我想念什么吗?我看不到为什么这不能输出预期的结果。

0 个答案:

没有答案