您的位置:首页 > Web前端

剑指offer_二叉树---序列化二叉树

2017-08-21 14:50 375 查看

题目描述

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

解题思路

1,序列化和反序列化都可以通过前序遍历(根左右)来进行

2,序列化遇到null用“#”来标明

3,反序列化的时候遇到“#”则停止

代码

/**
*
*/
package 二叉树;

/**
* <p>
* Title:请实现两个函数,分别用来序列化和反序列化二叉树
*
*
*/
public class SerializeAndDeserialize {

/**
* void
*
* @param args
*/
public String Serialize(TreeNode root) {    //通过前序遍历来序列化二叉树,遇到null值则改为特殊符号
StringBuffer sb = new StringBuffer();
if (root == null) {
sb.append("#,");
return sb.toString();
}
sb.append(root.val + ",");    //根
sb.append(Serialize(root.left));//左
sb.append(Serialize(root.right));//右
return sb.toString();

}
public int index =-1;
public TreeNode Deserialize(String str) {
index++;
int len = str.length();
if(index>=len){
return null;    //index从0开始,到末尾结束
}
String[] strs = str.split(",");  //把字符串按照“,”分隔开
TreeNode node =null;
if(!strs[index].equals("#")){
node = new TreeNode(Integer.valueOf(strs[index]));
node.left =Deserialize(str);
node.right = Deserialize(str);
}
return node;

}

public static void main(String[] args) {
// TODO Auto-generated method stub

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: