剑指offer_二叉树---序列化二叉树

简介: 剑指offer_二叉树---序列化二叉树

##题目描述

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

##解题思路

1,序列化和反序列化都可以通过前序遍历(根左右)来进行

2,序列化遇到null用“#”来标明

3,反序列化的时候遇到“#”则停止

##代码

/**
 * 
 */
package 二叉树;
/**
 * <p>
 * Title:请实现两个函数,分别用来序列化和反序列化二叉树
 * 
 *
 */
public class SerializeAndDeserialize {
  /**
   * void
   * 
   * @param args
   */
  public String Serialize(TreeNode root) {    //通过前序遍历来序列化二叉树,遇到null值则改为特殊符号
    StringBuffer sb = new StringBuffer();
    if (root == null) {
      sb.append("#,");
      return sb.toString();
    }
    sb.append(root.val + ",");    //根
    sb.append(Serialize(root.left));//左
    sb.append(Serialize(root.right));//右
    return sb.toString();
  }
    public int index =-1;
  public TreeNode Deserialize(String str) {
    index++;
    int len = str.length();
    if(index>=len){       
      return null;    //index从0开始,到末尾结束
    }
    String[] strs = str.split(",");  //把字符串按照“,”分隔开
    TreeNode node =null;
    if(!strs[index].equals("#")){
      node = new TreeNode(Integer.valueOf(strs[index]));
      node.left =Deserialize(str);
      node.right = Deserialize(str);
    }
    return node;
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
  }
}


相关文章
|
10月前
|
Go
golang力扣leetcode 297.二叉树的序列化与反序列化
golang力扣leetcode 297.二叉树的序列化与反序列化
47 0
|
10月前
|
存储 算法 C++
leetcode-297:二叉树的序列化与反序列化
leetcode-297:二叉树的序列化与反序列化
69 1
|
7月前
|
存储 算法 Python
【Leetcode刷题Python】297. 二叉树的序列化与反序列化
LeetCode第297题"二叉树的序列化与反序列化"的Python语言解决方案,包括序列化二叉树为字符串和反序列化字符串为二叉树的算法实现。
37 5
|
10月前
|
Java Go 算法
Golang每日一练(leetDay0100) 二叉树序列化和反序列化
Golang每日一练(leetDay0100) 二叉树序列化和反序列化
74 0
Golang每日一练(leetDay0100) 二叉树序列化和反序列化
|
10月前
|
Go Python 算法
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
782 0
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
|
10月前
|
算法 前端开发
331. 验证二叉树的前序序列化
331. 验证二叉树的前序序列化
65 0
|
10月前
|
算法
剑指 Offer 37:序列化二叉树
剑指 Offer 37:序列化二叉树
55 0
|
10月前
|
NoSQL 容器 Kubernetes
树、二叉树、树的遍历、树的序列化
树、二叉树、树的遍历、树的序列化
|
算法
【LeetCode力扣】297. 二叉树的序列化与反序列化
【LeetCode力扣】297. 二叉树的序列化与反序列化
86 0
|
存储 编解码 算法
C++算法:二叉树的序列化与反序列化
C++算法:二叉树的序列化与反序列化