首先我们介绍二叉树先序序列化的方式,假设序列化的结果字符串为str,初始时str等于空字符串。先序遍历二叉树,如果遇到空节点,就在str的末尾加上“#!”,“#”表示这个节点为空,节点值不存在,当然你也可以用其他的特殊字符,“!”表示一个值的结束。如果遇到不为空的节点,假设节点值为3,就在str的末尾加上“3!”。现在请你实现树的先序序列化。
给定树的根结点root,请返回二叉树序列化后的字符串。
package erchashu;
import java.util.ArrayList;
import java.util.List;
public class xianxuxuliehua {
static class TreeNode{
int val = 0;
TreeNode left =null;
TreeNode right =null;
TreeNode(int val){
this.val =val;
}
}
public static List<TreeNode> list =new ArrayList<TreeNode>();
public static void main(String[] args) {
TreeNode l1 =new TreeNode(1);
TreeNode l2 =new TreeNode(2);
TreeNode l3 =new TreeNode(3);
l1.left = l2;
l1.right =l3;
String str = xianxuxuliehua.toString(l1);
System.out.println(str);
}
public static String toString(TreeNode root) {
// write code here
StringBuffer buffer = new StringBuffer();
xianxu(root,buffer);
return buffer.toString();
}
public static void xianxu(TreeNode root,StringBuffer buffer) {
if(root ==null){
buffer.append("#!");
return ;
}
buffer.append(root.val+"!");
xianxu(root.left,buffer);
xianxu(root.right,buffer);
}
}