LeetCode 606. 根据二叉树创建字符串
给你二叉树的根节点 root
,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。
空节点使用一对空括号对 "()"
表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
示例 1:
输入:root = [1,2,3,4]
输出:"1(2(4))(3)"
解释:初步转化后得到 "1(2(4)())(3()())" ,但省略所有不必要的空括号对后,字符串应该是"1(2(4))(3)" 。
method
- 空节点返回空字符串
- 左右子树都空,返回当前节点
- 右子树为空,递归处理左子树
- 右子树不空,递归处理左子树和右子树
string tree2str(TreeNode* root) {
if (!root) return "";
if (!root->left && !root->right) {
return to_string(root->val);
}
if (!root->right) {
return to_string(root->val) + "(" + tree2str(root->left) + ")";
}
return to_string(root->val) + "(" + tree2str(root->left) + ")(" + tree2str(root->right) + ")";
}