1. 题目概述
2. 核心分析
3. 代码示例
class Solution {
public:
void _treeTostr(TreeNode* root, string& str) {
//如果为空, 则返回
if(root == nullptr)
return;
//转换当前结点的数据: int --> string
stringstream ss;
ss << root->val;
str += ss.str();
//递归处理
if(root->left) {
//左子树存在
str += '(';
_treeTostr(root->left, str);
str += ')';
}
else {
//左子树不存在
//如果右子树存在, ()不能省略
if(root->right) {
str += "()";
}
//如果右子树也不存在, ()都省略, 不用管就行了
}
if(root->right) {
//右子树存在
str += '(';
_treeTostr(root->right, str);
str += ')';
//如果右子树不存在, ()可以省略
}
}
string tree2str(TreeNode* t) {
string str;
_treeTostr(t, str);
return str;
}
};