首页 > 其他 > 详细

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

时间:2018-03-13 14:43:35      阅读:262      评论:0      收藏:0      [点我收藏+]
 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   }

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!