字符串如何在递归函数结束的时候返回一个值然后清空。void WriteExpre(BTREE T){//输出中序表达式 //string s=""; if (T != NULL) { if (T->lchild != NULL && T->rchild != NULL) { s+="("; } //非子结点==操作符 //x+ WriteExpre(T->lchild,x); s += (T->data); WriteExpre(T->rchild,x); if (T->lchild != NULL && T->rchild != NULL) { s+=")"; } } return x+=s; s="";
时间: 2024-02-29 08:53:47 浏览: 65
C/C++ 实现递归和栈逆序字符串的实例
在递归函数结束时,您可以将字符串作为返回值返回,然后在函数结束前清空字符串。以下是一个示例代码:
```c++
string WriteExpre(BTREE T){
string s="";
if (T != NULL){
if (T->lchild != NULL && T->rchild != NULL) {
s+="(";
}
s+=WriteExpre(T->lchild);
s+=(T->data);
s+=WriteExpre(T->rchild);
if (T->lchild != NULL && T->rchild != NULL) {
s+=")";
}
}
string res = s; // 将字符串保存到返回值
s.clear(); // 清空字符串
return res; // 返回字符串
}
```
在这个函数中,我们首先定义了一个字符串 s 来保存中序表达式。然后通过递归遍历二叉树,将左子树的表达式、当前节点的值和右子树的表达式拼接成一个完整的表达式,最后将这个字符串保存到返回值中,清空字符串,并返回字符串。
在使用这个函数时,您可以这样调用:
```c++
string expr = WriteExpre(root);
cout << expr << endl;
```
这样就可以得到中序表达式,并且字符串在函数返回后被清空,可以安全地再次使用。
阅读全文