zoukankan      html  css  js  c++  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   }
  • 相关阅读:
    CSS边框(圆角、阴影、背景图片)
    CSS3浏览器兼容
    HTML5全局属性
    HTLM5新增属性
    HTML5标签
    如何开始使用bootstrap
    重新了解Java基础(三)-运行机制&HelloWorld
    重新了解Java基础(二)-Java的特性
    Java关键字之native
    重新了解Java基础(一)
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8556373.html
Copyright © 2011-2022 走看看