码迷,mamicode.com
首页 > 其他好文 > 详细

请实现两个函数,分别用来序列化和反序列化二叉树

时间:2018-03-13 15:43:09      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:serialize   指针   ring   import   ide   不能   方便   java   不为   

 1 /*
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6 
 7     public TreeNode(int val) {
 8         this.val = val;
 9 
10     }
11 
12 }
13 */
14 import java.lang.StringBuilder;
15 //序列化 思路:
16 // 先序遍历 节点不为空时存入val,  节点为空时 存入#,
17 //加入逗号的目的  是为了拆分方便
18 public class Solution {
19         StringBuilder bulider=new StringBuilder();      
20         int index=-1;//字符数组指针  
21         String Serialize(TreeNode root) {
22            if(root==null) return bulider.append("#,").toString();                 
23              bulider.append(root.val+",");
24              Serialize(root.left);
25              Serialize(root.right); 
26             return bulider.toString();
27           }
28     //反序列化 把字符串拆分为字符数组 只要不为#就是前一节点的左子节点
29     //遇到# 就回溯为上一节点的右子节点
30     //建立二叉树的规则 是 根左右
31     TreeNode Deserialize(String str){    
32         String[]strlist=str.split(",");
33         return Mydeserizlize(strlist);
34        }
35     
36      TreeNode Mydeserizlize(String[] strlist){
37         index++;
38         TreeNode root=null;//递归时每次都要新建新节点   不能把root作为全局变量  
39        if(!strlist[index].equals("#")){
40            root=new TreeNode(Integer.valueOf(strlist[index]));
41            root.left=Mydeserizlize(strlist);
42            root.right=Mydeserizlize(strlist);
43        }
44          return root;
45     }
46       
47   }

 

请实现两个函数,分别用来序列化和反序列化二叉树

标签:serialize   指针   ring   import   ide   不能   方便   java   不为   

原文地址:https://www.cnblogs.com/bolianggufeng/p/8556373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!