序列化二叉树
描述
请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。
解题
二叉树
public class TreeNode {
int val=0;
TreeNode left=null;
TreeNode right=null;
public TreeNode(int val) {
this.val = val;
}
}
Solution
/**
* 二叉树与字符串的转换
* 先序遍历
*/
public class Solution {
int index=-1;
String Serialize(TreeNode root){
if (root==null){
return "#";//二叉树转字符串
}else {
return root.val+","+Serialize(root.left)+","+Serialize(root.right);
}
}
TreeNode Deserialize(String str){
String[] s=str.split(",");//字符串拆分
index++;
int len=s.length;
if (index>len){
return null;//字符串遍历的终止操作
}
TreeNode treeNode=null;//创建二叉树
if (!s[index].equals("#")){
treeNode=new TreeNode(Integer.parseInt(s[index]));//字符串转数值,压入二叉树节点
treeNode.left=Deserialize(str);//递归左子树
treeNode.right=Deserialize(str);//递归右子树
}
return treeNode;
}
}