首页 > 其他 > 详细

37. 序列化二叉树

时间:2020-04-03 22:22:17      阅读:49      评论:0      收藏:0      [点我收藏+]

请实现两个函数,分别用来序列化和反序列化二叉树。

示例: 

你可以将以下二叉树:

    1
   /   2   3
     /     4   5

序列化为 "[1,2,3,null,null,4,5]"

/**
 * 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) {
        return serialize(root,"");
    }
    private String serialize(TreeNode root,String sb){
        if(root == null){
            sb += "null,";
        }else{
            sb += root.val + ",";
            sb = serialize(root.left,sb);
            sb = serialize(root.right,sb);
        }
        return sb;
    }

    // Decodes your encoded data to tree.
    public TreeNode deserialize(String data) {
        String[] strs = data.split(",");
        List<String> list = new LinkedList<>(Arrays.asList(strs));
        return deserialize(list);
  
    }
    private TreeNode deserialize(List<String> list){
        if(list.get(0).equals("null")){
            list.remove(0);
            return null;
        }
        TreeNode root = new TreeNode(Integer.valueOf(list.get(0)));
        list.remove(0);
        root.left = deserialize(list);
        root.right = deserialize(list);
        return root;
        
    }
    
}

 

 

37. 序列化二叉树

原文:https://www.cnblogs.com/zzytxl/p/12628996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!