297. Serialize and Deserialize Binary Tree

level order遍历+构造

相似:449

// Encodes a tree to a single string.
public String serialize(TreeNode root) {
    if (root == null) return "";
    StringBuffer sb = new StringBuffer();

    LinkedList<TreeNode> list = new LinkedList<>();
    list.add(root);

    while (!list.isEmpty()) {
        TreeNode node = list.remove();
        if (node != null) {
            sb.append(node.val + ",");
            list.add(node.left);
            list.add(node.right);
        } else {
            sb.append("#,");
        }
    }
    return sb.substring(0, sb.length() - 1);
}

// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
    if (data.length() == 0) return null;
    String[] nodes = data.split(",");
    LinkedList<TreeNode> list = new LinkedList<>();
    TreeNode root = new TreeNode(Integer.parseInt(nodes[0]));

    list.add(root);
    int count = 1;

    while (!list.isEmpty() && count < nodes.length) {
        TreeNode node = list.remove();
        if (!nodes[count].equals("#")) {
            node.left = new TreeNode(Integer.parseInt(nodes[count]));
            list.add(node.left);
        } 
        count++;
        if (!nodes[count].equals("#")) {
            node.right = new TreeNode(Integer.parseInt(nodes[count]));
            list.add(node.right);
        }
        count++;
    }
    return root;
}

results matching ""

    No results matching ""