二叉树序列化与反序列化的Java实现

绝地灬酷狼 2023-10-10 15:46 128阅读 0赞

 二叉树是树的特殊一种,在笔试中较为常见,其具有如下特点:

  1、每个结点最多有两颗子树,结点的度最大为2。

  2、左子树和右子树是有顺序的,次序不能颠倒。

  3、即使某结点只有一个子树,也要区分左右子树。

  import java.util.Arrays;

  import java.util.LinkedList;

  import java.util.Queue;

  public class Demo {

  public String serialize(TreeNode root) {

  if (root == null) return “”;

  StringBuilder encodedStr = new StringBuilder();

  encode(root,encodedStr);

  return encodedStr.substring(1).toString();

  }

  public void encode(TreeNode root,StringBuilder sb){

  if (root == null){

  sb.append(“,#“);

  return;

  }

  sb.append(“,”).append(root.val);

  encode(root.left,sb);

  encode(root.right,sb);

  }

  public TreeNode deserialize(String data) {

  if (data.length() == 0) return null;

  Queuequeue = new LinkedList<>(Arrays.asList(data.split(“,”)));

  return decode(queue);

  }

  public TreeNode decode(Queuequeue){

  if (queue.isEmpty()) return null;

  String cur = queue.poll();

  if (cur.equals(“#“)) return null;

  TreeNode root = new TreeNode(Integer.valueOf(cur));

  root.left = decode(queue);

  root.right = decode(queue);

  return root;

  }

  }

  public class TreeNode {

  int val;

  TreeNode left;

  TreeNode right;

  TreeNode(int x) { val = x; }

  }

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读

    相关 序列/序列

    二叉树被记录成文件的过程,为二叉树的序列化 通过文件重新建立原来的二叉树的过程,为二叉树的反序列化 设计方案并实现。 (已知结点类型为32位整型) 思路:先序遍历实现。