leetcode 606 : 根据二叉树创建字符串
606. 根据二叉树创建字符串
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
示例 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)"
解释: 和第一个示例相似,
除了我们不能省略第一个对括号来中断输入和输出之间的一对一映射关系。
Related Topics
树
深度优先搜索
字符串
二叉树
递归
class Solution {
private StringBuilder sb = new StringBuilder();
public String tree2str(TreeNode root) {
dfs(root);
return sb.toString();
}
public void dfs(TreeNode root){
sb.append(root.val);
//左孩子不为空 右孩子为空(右孩子括号可以省略)
//左孩子为空,右孩子不为空(左孩子括号不可以省略)
//2个都为空 全部省略
if(root.left == null && root.right == null){
return;
}
//左子树
sb.append("(");
if(root.left != null){
dfs(root.left);
}
sb.append(")");
//右子树
if(root.right != null){
sb.append("(");
dfs(root.right);
sb.append(")");
}
}
}
解答成功:
执行耗时:1 ms,击败了100.00% 的Java用户
内存消耗:41.1 MB,击败了31.77% 的Java用户