序列化二叉树

Posted 氵冫丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化二叉树相关的知识,希望对你有一定的参考价值。

题目

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

解题

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

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


以上是关于序列化二叉树的主要内容,如果未能解决你的问题,请参考以下文章

Offer[37] 序列化二叉树

编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~

63.序列化二叉树

与二叉树有关的编程题的Java代码实现

50.序列化二叉树

剑指OFFER 序列化二叉树