剑61—序列化、反序列化二叉树

xiaoxiao2021-02-28  35

题目描述

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

/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { int index = -1; //计数变量 //序列化二叉树 String Serialize(TreeNode root) { StringBuilder sb = new StringBuilder(); 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(); } //反序列化构建二叉树 TreeNode Deserialize(String str) { index++; //以","分开,字符串数组 String[]s=str.split(","); TreeNode node=null; //判断首个字符不是$,则节点不为空,构建二叉树,开始形成二叉树 while(!s[index].equals("$")){ //前序遍历构建二叉树 node=new TreeNode(Integer.valueOf(s[index]));//懒汉式初始化二叉树节点值 node.left=Deserialize(str); node.right=Deserialize(str); } return node; } }
转载请注明原文地址: https://www.6miu.com/read-2627063.html

最新回复(0)