二叉树的序列化

来源:互联网 发布:php实现短信验证码 编辑:程序博客网 时间:2024/06/07 17:39

首先我们介绍二叉树先序序列化的方式,假设序列化的结果字符串为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 hereStringBuffer 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);}}


0 0
原创粉丝点击