# 606.Construct String from Binary Tree

**606.Construct String from Binary Tree**

难度:Easy

> 你需要采用前序遍历的方式，将一个二叉树转换成一个由括号和整数组成的字符串。

空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

```
示例 1:

输入: 二叉树: [1,2,3,4]
       1
     /   \
    2     3
   /    
  4     

输出: "1(2(4))(3)"

解释: 原本将是“1(2(4)())(3())”，
在你省略所有不必要的空括号对之后，
它将是“1(2(4))(3)”。
示例 2:

输入: 二叉树: [1,2,3,null,4]
       1
     /   \
    2     3
     \  
      4 

输出: "1(2()(4))(3)"
```

解释: 和第一个示例相似， 除了我们不能省略第一个对括号来中断输入和输出之间的一对一映射关系。

先序遍历，需要注意左子树为空的时候需要加上一个括号对。

```
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    string tree2str(TreeNode* t) {
        string res;
        if(!t) return res;
        res+=to_string(t->val);
         if(t->left && t->right) 
         {
             res+="(" +tree2str(t->left)+")";
             res+= "("+tree2str(t->right) + ")";
         }
        else if(t->left)
            res+="(" +tree2str(t->left)+")";
        else if(t->right) 
            res+= "()("  + tree2str(t->right) + ")";
        return res;
            
    }
};
```

> 执行用时 : 56 ms, 在Construct String from Binary Tree的C++提交中击败了64.60% 的用户\
> 内存消耗 : 55.7 MB, 在Construct String from Binary Tree的C++提交中击败了21.47% 的用户
