1.本题知识点
二叉树,递归
2. 题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
3. 思路
这题其实挺开放的,没规定具体的序列化规则,我们可以使用先序遍历的方式,
① 序列化规则:#表示空,节点之前用,分隔。
② 反序列化规则:相当于重建二叉树,可以参考之前的博客。
Java版本:
public class Solution {
public int index = - 1 ;
String Serialize ( TreeNode root) {
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 ( ) ;
}
TreeNode Deserialize ( String str) {
index++ ;
if ( index >= str. length ( ) ) {
return null;
}
String[ ] strr = str. split ( "," ) ;
TreeNode node = null;
if ( ! strr[ index] . equals ( "#" ) ) {
node = new TreeNode ( Integer. valueOf ( strr[ index] ) ) ;
node. left = Deserialize ( str) ;
node. right = Deserialize ( str) ;
}
return node;
}
}