码迷,mamicode.com
首页 > 其他好文 > 详细

序列化二叉树

时间:2016-06-28 02:09:15      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

题目

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

解题

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

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;
    }
}


序列化二叉树

标签:

原文地址:http://blog.csdn.net/qunxingvip/article/details/51772676

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!