2013-10-11 63 views
1

我有一个简单的函数来递归地构建一个字符串树。该功能被赋予一个字符串“***”和树上的结果应该是这样的:使用递归的非二叉树不会创建整个树

         *** 
           /  |  \ 
           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); 
    } 
    } 
} 
} 
+0

我正确缩进了代码。也许你现在能够更容易地发现错误 – Oswald

回答

1

删除从 '返回' “返回buildTree(NEWTREE);”你应该很好走。

+0

这样做。谢谢! – Kalmar