数据结构-根据二叉树创建字符串(java)

根据二叉树创建字符串(力扣606题)
题目
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
在这里插入图片描述
思路
1,通过先序遍历,用StringBuilder拼接大字符串
2,括号问题
当左树右树都空,可以省略括号
当左树空,右树不空,不能省略括号
当左树不空,右树空,可以省略括号
代码实现

 StringBuilder sb = new StringBuilder();
    public String tree2str(TreeNode root) {
        if(root == null){
            return "";
        }
        preOrder(root);
        return sb.toString();
    }
    //"1(2(4))(3)"
    public void preOrder(TreeNode root) {
        if(root == null){
            return;
        }
        //根
        sb.append(root.val);
        //左树不空
        if(root.left != null){
            sb.append("(");
            preOrder(root.left);
            sb.append(")");
        }else{
            //左树为空,判断右树是否空
            if(root.right != null) {
                sb.append("()");
            }
            sb.append("");
        }
        //右树不空
        if(root.right != null){
            sb.append("(");
            preOrder(root.right);
            sb.append(")");
        }
    }

版权声明:本文为qq_55660421原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。