首页

源码搜藏网

首页 > 开发教程 > 软件工程 >

序列化二叉树

创建时间:2016-06-28 13:23  

题目

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

解题

什么是序列化?
可以理解为一直存储结构
序列化后还要可以反序列化
对于树的序列号,可以理解为层次遍历,但是也要记录其中的空结点,这是为了能够回去

public class Solution {

    String Serialize(TreeNode root) {
        if(root == null)
            return "";
        StringBuilder sb = new StringBuilder();
        Serialize(root, sb);
        return sb.toString();
    }

    void Serialize(TreeNode root, StringBuilder sb) {
        if(root == null) {
            sb.append("#,");
            return;
        }
        sb.append(root.val);
        sb.append(',');
        Serialize(root.left, sb);
        Serialize(root.right, sb);
    }

    int index = -1;

    TreeNode Deserialize(String str) {
        if(str.length() == 0)
            return null;
        String[] strs = str.split(",");
        return Deserialize(strs);
    }  

    TreeNode Deserialize(String[] strs) {
        index++;
        if(!strs[index].equals("#")) {
            TreeNode root = new TreeNode(0);     
            root.val = Integer.parseInt(strs[index]);
            root.left = Deserialize(strs);
            root.right = Deserialize(strs);
            return root;
        }
        return null;
    }
}


1
0
   
上一篇:SpringMVC Controller 介绍
下一篇:bzoj4566【HAOI2016】找相同字符

相关内容

热门推荐