LeetCode - Serialize and Deserialize Binary Tree

來源:互聯網
上載者:User

標籤:sid   wing   cat   store   instant   proc   val   example   lin   

Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.Example: You may serialize the following tree:    1   /   2   3     /     4   5as "[1,2,3,null,null,4,5]"Clarification: The above format is the same as how LeetCode serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.Note: Do not use class member/global/static variables to store states. Your serialize and deserialize algorithms should be stateless.
/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Codec {    // Encodes a tree to a single string.    public String serialize(TreeNode root) {        if(root == null){            return "null";        }        return root.val + "," +serialize(root.left) + ","+serialize(root.right);    }    // Decodes your encoded data to tree.    public TreeNode deserialize(String data) {        if(data == null || data.length() == 0){            return null;        }        Queue<String> queue =new LinkedList<>();        queue.addAll(Arrays.asList(data.split(",")));        //String[] nodes = data.split(",");        return deserializeHelper(queue);    }    public TreeNode deserializeHelper(Queue<String> nodes){        String val = nodes.remove();        if (val.equals("null")) return null;        else {            TreeNode node = new TreeNode(Integer.valueOf(val));            node.left = deserializeHelper(nodes);            node.right = deserializeHelper(nodes);            return node;        }    }    }// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));

  無法直接傳入int因為它是primitive type, changes made to it will not be visible outside the function scope. 

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Codec {    // Encodes a tree to a single string.    public String serialize(TreeNode root) {        if(root == null){            return "null";        }        return root.val + "," +serialize(root.left) + ","+serialize(root.right);    }    // Decodes your encoded data to tree.    public TreeNode deserialize(String data) {        if(data == null || data.length() == 0){            return null;        }        //Queue<String> queue =new LinkedList<>();        //queue.addAll(Arrays.asList(data.split(",")));        String[] nodes = data.split(",");        return deserializeHelper(nodes, new int[]{0});    }    /*    public TreeNode deserializeHelper(Queue<String> nodes){        String val = nodes.remove();        if (val.equals("null")) return null;        else {            TreeNode node = new TreeNode(Integer.valueOf(val));            node.left = deserializeHelper(nodes);            node.right = deserializeHelper(nodes);            return node;        }    }    */        public TreeNode deserializeHelper(String[] nodes, int[] index){        String val = nodes[index[0]];        index[0] = index[0]+1;        if(val.equals("null") ){            return null;        }        TreeNode node = new TreeNode(Integer.valueOf(val));        node.left = deserializeHelper(nodes,index);        node.right = deserializeHelper(nodes,index);        return node;    }    }// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));

 

LeetCode - Serialize and Deserialize Binary Tree

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.