import java.util.*;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {

    //获取树的高度
    static public int height(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(height(root.left), height(root.right)) + 1;
    }
    static TreeNode Deserialize(String str) {
        if (str.isEmpty()) {
            return null;
        }
        List<TreeNode> list = new ArrayList<>();
        String[] split = str.split(",");
        if (split.length < 2) {
            return null;
        }
        for (int i = 0; i < split.length; i++) {
            if (!split[i].equals("-1")) {
                list.add(new TreeNode(Integer.parseInt(split[i])));
            } else {
                list.add(null);
            }
        }
        for (int j = 0; j < list.size() / 2; j++) {
            TreeNode node = list.get(j);
            if (node != null) {
                TreeNode treeNode = list.get(j * 2);
                if (treeNode != null) {
                    node.left = list.get(j * 2);
                }
                TreeNode treeNode1 = list.get(j * 2 + 1);
                if (treeNode1 != null) {
                    node.right = list.get(j * 2 + 1);
                }
            }
        }
        return list.get(1);
    }
    // 这里采用任何一种遍历都行
    static private void preorder(TreeNode root, int index, int[] arr) {
        if (root == null) {
            return;
        }
        arr[index] = root.val;
        preorder(root.left, index * 2, arr);
        preorder(root.right, index * 2 + 1, arr);
    }

    static String Serialize(TreeNode root) {
        int height = height(root);
        int[] arr = new int[(int) Math.pow(2, height)];
        Arrays.fill(arr, -1);
        preorder(root, 1, arr);
        StringBuffer sb = new StringBuffer();
        for (int j : arr) {
            sb.append(j).append(",");
        }
        return sb.substring(0, sb.length() - 1);
    }


}