字符串如何在递归函数结束的时候返回一个值然后清空void WriteExpre(BTREE T,string x){//输出中序表达式 //string s=; if (T != NULL) { if (T->lchild != NULL \\&\\& T->rchild != NULL)
时间: 2024-02-29 16:53:50 浏览: 94
递归逆序输出字符串
5星 · 资源好评率100%
您可以在递归函数的返回值中返回字符串,然后在函数结束时清空字符串。以下是一个示例代码:
```c++
string WriteExpre(BTREE T, string x) {
string s = "";
if (T != NULL) {
if (T->lchild != NULL && T->rchild != NULL) {
s += "(" + WriteExpre(T->lchild, x) + T->data + WriteExpre(T->rchild, x) + ")";
} else if (T->lchild == NULL && T->rchild != NULL) {
s += T->data + WriteExpre(T->rchild, x);
} else if (T->lchild != NULL && T->rchild == NULL) {
s += WriteExpre(T->lchild, x) + T->data;
} else {
s += T->data;
}
}
return s;
}
```
在这个函数中,我们首先定义了一个字符串 s 来保存中序表达式。然后通过递归遍历二叉树,将左子树的表达式、当前节点的值和右子树的表达式拼接成一个完整的表达式,最后返回这个字符串。
在使用这个函数时,您可以这样调用:
```c++
string expr = WriteExpre(root, "x");
cout << expr << endl;
expr.clear();
```
在输出完中序表达式后,我们可以调用 clear() 函数来清空字符串,以便下一次使用。
阅读全文