你需要採用前序遍歷的方式,將一個二叉樹轉換成一個由括號和整數組成的字符串。
空節點則用一對空括號 "()" 表示。而且你需要省略所有不影響字符串與原始二叉樹之間的
一對一映射關係的空括號對。
示例 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.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public String tree2str(TreeNode t) {
if(t == null) return "";
if(t.left == null && t.right == null)
return t.val + "";
if(t.right == null)
return t.val + "(" + tree2str(t.left) + ")";
return t.val + "(" + tree2str(t.left) + ")(" + tree2str(t.right) + ")";
}
}