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.序列化二叉树的主要内容,如果未能解决你的问题,请参考以下文章