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


     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   }
  • 相关阅读:
    getchar,putchar函数
    强制类型转换和整数常量的数据类型及转换
    c语言整型的隐式数据 类型转换
    c语言整型数据输出格式声明
    c语言整型变量的储存空间,以及所表示的整数范围
    c语言常量
    c语言求回文数
    Android4.0源码目录结构详解
    MTK Android源代码目录
    Comparator 和 Comparable
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8556373.html
Copyright © 2020-2023  润新知