- binary Tree 和 Stringbuilder 的联合题
- 对Stringbuilder 和StringTokenizer的使用方法的考验
public String serialize(TreeNode root) {
// write your code here
StringBuilder result = new StringBuilder();
if (root == null) return result.toString();
serialHelper(root, result);
return result.substring(0, result.length() - 1);
}
private void serialHelper(TreeNode root, StringBuilder result) {
if (root == null) {
result.append("#,");
} else {
result.append(root.val).append(",");
serialHelper(root.left, result);
serialHelper(root.right, result);
}
}
/**
* This method will be invoked second, the argument data is what exactly
* you serialized at method "serialize", that means the data is not given by
* system, it's given by your own serialize method. So the format of data is
* designed by yourself, and deserialize it here as you serialize it in
* "serialize" method.
*/
public TreeNode deserialize(String data) {
// write your code here
if (data == null || data.length() == 0) return null;
StringTokenizer st = new StringTokenizer(data, ",");
return deseriaHelper(st);
}
private TreeNode deseriaHelper(StringTokenizer st) {
if (!st.hasMoreTokens()) return null;
String val = st.nextToken();
if (val.equals("#")) {
return null;
}
TreeNode root = new TreeNode(Integer.parseInt(val));
root.left = deseriaHelper(st);
root.right = deseriaHelper(st);
return root;
}
No comments:
Post a Comment