首先我們介紹二叉樹先序序列化的方式,假設序列化的結果字符串為str,初始時str等于空字符串。先序遍歷二叉樹,如果遇到空節點,就在str的末尾加上“#!”,“#”表示這個節點為空,節點值不存在,當然你也可以用其他的特殊字符,“!”表示一個值的結束。如果遇到不為空的節點,假設節點值為3,就在str的末尾加上“3!”。現在請你實現樹的先序序列化。
給定樹的根結點root,請返回二叉樹序列化后的字符串。
先用先序遍歷.
public class TreeToString {
private String END="!";
private String NULL="#";
public String toString(TreeNode root) {
StringBuilder sb=new StringBuilder();
preOrderRec(root,sb);
return sb.toString();
}
private void preOrderRec(TreeNode root,StringBuilder sb){
if(root==null)return;
sb.append(root.val+END);
if(root.left!=null){
preOrderRec(root.left,sb);
}
else{
sb.append(NULL+END);
}
if(root.right!=null){
preOrderRec(root.right,sb);
}
else{
sb.append(NULL+END);
}
}
}