63.序列化二叉树

Posted yjxyy

tags:

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

题目描述:

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

思路分析:

??序列化指的就是,将二叉树转化为字符串序列,反序列化指的就是将字符串转化为二叉树。我们可以用先序遍历将二叉树转化为字符串,遇见节点为空记做 #!,不为空记做 num!。同样的我们可以用先序遍历的方法重建二叉树。

代码:

import java.util.*;
/*
public class TreeNode 
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) 
        this.val = val;

    


*/
public class Solution 
    String Serialize(TreeNode root) 
        if(root==null)
            return "#!";
        String res="";
        res=res+root.val+"!";
        res=res+Serialize(root.left);
        res=res+Serialize(root.right);
        return res;
  
    public TreeNode Deserialize(String str)
        Queue<String>q=new LinkedList<>();
        String []s=str.split("!");
        for(int i=0;i<s.length;i++)
            q.offer(s[i]);
        
        return reconstructTree(q);
    
    public TreeNode reconstructTree(Queue<String>q) 
        String s=q.poll();
        if(s.equals("#"))
            return null;
        TreeNode pRoot=new TreeNode(Integer.valueOf(s));
        pRoot.left=reconstructTree(q);
        pRoot.right=reconstructTree(q);
        return pRoot;
  

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

二叉树 nyoj-63 小猴子下落

二叉树 nyoj-63 小猴子下落

第十四周 项目1--验证算法--平衡二叉树

python代码实现二叉树的序列化和反序列化

通过遍历序列构造二叉树(扩展二叉树的先序先序和中序后序和中序层序和中序)附可执行完整代码

Offer[37] 序列化二叉树