打卡系列-剑指 Offer 37. 序列化二叉树

tech2026-02-15  1

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

示例: 

你可以将以下二叉树:

    1    / \   2   3      / \     4   5

序列化为 "[1,2,3,null,null,4,5]"

import com.Node.TreeNode; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class 序列化二叉树 { public static void main(String[] args) { TreeNode root = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNode node3 = new TreeNode(3); TreeNode node4 = new TreeNode(4); TreeNode node5 = new TreeNode(5); root.left = node2; root.right = node3; node3.left = node4; node3.right = node5; String str = serialize(root); System.out.println(str); TreeNode root1 = deserialize(str); test(root1); } // Encodes a tree to a single string. public static String serialize(TreeNode root) { if(root == null) return "[]"; //创建队列 Queue<TreeNode> queue = new LinkedList<>(); //存储整形和null List<Integer> list = new ArrayList<>(); queue.offer(root); while (!queue.isEmpty()){ //出队列 TreeNode node = queue.poll(); if(node != null){ list.add(node.val); queue.offer(node.left); queue.offer(node.right); }else { list.add(null); } } return list.toString(); } // Decodes your encoded data to tree. public static TreeNode deserialize(String data) { if(data.equals("[]")) return null; String str = data.substring(1 , data.length() - 1); String[] nums = str.split(","); //队列 Queue<TreeNode> queue = new LinkedList<>(); //创建根节点 TreeNode root = new TreeNode(Integer.parseInt(nums[0].trim())); queue.offer(root); int index = 1; while (index < nums.length && !queue.isEmpty()){ TreeNode node = queue.poll(); if(!nums[index].trim().equals("null")){ node.left = new TreeNode(Integer.parseInt(nums[index].trim())); queue.offer(node.left); } index++; if(!nums[index].trim().equals("null")){ node.right = new TreeNode(Integer.parseInt(nums[index].trim())); queue.offer(node.right); } index++; } return root; } public static void test(TreeNode root){ if(root == null){ return; } System.out.print(root.val); test(root.left); test(root.right); } }

包含测试用例

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof  

 

最新回复(0)