-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution37.java
37 lines (36 loc) · 1.38 KB
/
Solution37.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.usher.algorithm.offer;
/**
* @Author: Usher
* @Description:
* 序列化二叉树
序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点
不为空时,在转化val所得的字符之后添加一个' , '作为分割。对于空节点则以 '#' 代替。
反序列化:按照前序顺序,递归的使用字符串中的字符创建一个二叉树(特别注意:
在递归时,递归函数的参数一定要是char ** ,这样才能保证每次递归后指向字符串的指针会
随着递归的进行而移动
*/
public class Solution37 {
int index = -1;
String Serialize(TreeNode root) {
StringBuffer stringBuffer = new StringBuffer();
if (root == null) {
stringBuffer.append("#,");
return stringBuffer.toString();
}
stringBuffer.append(root.val + ",");
stringBuffer.append(Serialize(root.left));
stringBuffer.append(Serialize(root.right));
return stringBuffer.toString();
}
TreeNode Deserialize(String str) {
index++;
String[] strings = str.split(",");
TreeNode node = null;
if (!strings[index].equals("#")){
node = new TreeNode((Integer.valueOf(strings[index])));
node.left = Deserialize(str);
node.right = Deserialize(str);
}
return node;
}
}