c++ - 使用递归的非二叉树不会创建整棵树

标签 c++ recursion tree

我有一个简单的函数可以递归地构建一个字符串树。该函数被赋予一个字符串“***”,结果树应该如下所示:

                                        ***
                                 /       |       \
                              X**       *X*       **X
                             / \        / \        / \
                          XX*  X*X    XX* *XX    X*X  *XX 
                          /     \     /     \     /     \
                         XXX   XXX   XXX   XXX   XXX    XXX

问题是我的函数只创建树的最左边 (X**, XX*, XXX)

函数如下:

//Takes in the string "***"
void buildTree(string tree){
 if (tree == "XXX") return;
 else{
   string newTree;
   for (int i=0; i<tree.size(); i++){
     if(tree[i] == '*'){
       newTree = tree;
       newTree[i] = 'X';
       cout << newTree << endl;
       return buildTree(newTree);
     }
   }
 }
}

最佳答案

从“return buildTree(newTree);”中删除“return”你应该可以开始了。

关于c++ - 使用递归的非二叉树不会创建整棵树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19308266/

相关文章:

recursion - 尾递归在OCaml中的应用

python - 使用dict的递归阶乘导致RecursionError

haskell - haskell 中定义类型的树

database - 给定一组预定的键,如何重新排序键,以便在插入 B 树时使用最少数量的节点?

java - 递归创建一棵树

javascript - 从树结构中抓取所有 "names"

c++ - 使用 GetFunctionInfo 从 FunctionID 获取函数的名称

C++通过随机选择它们的元素从两个元组制作元组

c++ - 在圆圈周围放置一个 ofImage

c++ - decltype 的参数不正确