您的位置:首页 > Web前端

剑指offer——序列化二叉树

2016-06-23 21:12 549 查看

题目描述:

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

思路:

首先得理解题目的意思,序列化就是返回一个带有#和逗号的字符串。反序列化就是根据带有#和逗号的字符串返回一棵二叉树。比如对于二叉树

1
/ \
2    3
/\    /\
4  5   6  7


来讲,序列化的结果是1,2,#,#,3,4,#,7,#,#,5,#,#,。而反序列化的结果则是输出一棵二叉树。

代码实现:

/*
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) {
StringBuilder sb = new StringBuilder();
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();
}

int p = -1;
TreeNode Deserialize(String str) {
p++;
if (p >= str.length())
return null;
TreeNode node = null;
String[] strArray = str.split(",");
if (!strArray[p].equals("#")) {
node = new TreeNode(Integer.valueOf(strArray[p]));
node.left = Deserialize(str);
node.right = Deserialize(str);
}
return node;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: