根据二叉树创建字符串
难度:简单
力扣上的题不知道是不是因为翻译的缘故,总是有题目让人晦涩难懂,比如今天这道题,其实题目的意思是子节点需要用()来包裹。举例来说,二叉树 [root,left,right],则转换为 root(left)(right) 。如果只有left为空节点,则输出 root()(right) ;如果 只有right为空节点则可以忽略右节点的(),输出为 root(left)。
代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
StringBuilder sb = new StringBuilder();
public String tree2str(TreeNode root) {
dfs(root);
return sb.toString();
}
private void dfs(TreeNode root) {
if (root!=null){
sb.append(root.val);
if (root.left!=null || root.right!=null){
sb.append("(");
dfs(root.left);
sb.append(")");
if (root.right!=null){
sb.append("(");
dfs(root.right);
sb.append(")");
}
}
}
}
}
执行结果:成功