剑指 Offer 37. 序列化二叉树
題目
序列化是將一個(gè)數(shù)據(jù)結(jié)構(gòu)或者對(duì)象轉(zhuǎn)換為連續(xù)的比特位的操作,進(jìn)而可以將轉(zhuǎn)換后的數(shù)據(jù)存儲(chǔ)在一個(gè)文件或者內(nèi)存中,同時(shí)也可以通過(guò)網(wǎng)絡(luò)傳輸?shù)搅硪粋€(gè)計(jì)算機(jī)環(huán)境,采取相反方式重構(gòu)得到原數(shù)據(jù)。
請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法來(lái)實(shí)現(xiàn)二叉樹(shù)的序列化與反序列化。這里不限定你的序列 / 反序列化算法執(zhí)行邏輯,你只需要保證一個(gè)二叉樹(shù)可以被序列化為一個(gè)字符串并且將這個(gè)字符串反序列化為原始的樹(shù)結(jié)構(gòu)。
提示: 輸入輸出格式與 LeetCode 目前使用的方式一致,詳情請(qǐng)參閱 LeetCode 序列化二叉樹(shù)的格式。你并非必須采取這種方式,你也可以采用其他的方法解決這個(gè)問(wèn)題。
示例 1:
輸入:root = [1,2,3,null,null,4,5]
輸出:[1,2,3,null,null,4,5]
示例 2:
輸入:root = []
輸出:[]
示例 3:
輸入:root = [1]
輸出:[1]
示例 4:
輸入:root = [1,2]
輸出:[1,2]
解題思路
- 序列化時(shí),先序遍歷二叉樹(shù),使用null表示空節(jié)點(diǎn),使用’,'分隔每一個(gè)節(jié)點(diǎn)
- 反序列化時(shí),將字符串使用’,'分割回去原來(lái)的若干個(gè)節(jié)點(diǎn)元素,同樣先序遍歷這些節(jié)點(diǎn),就能還原出這顆二叉樹(shù)
代碼
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/public class Codec {// Encodes a tree to a single string.public void se(TreeNode root,StringBuilder strings) {if(root==null)strings.append("null").append(',');else {strings.append(root.val).append(',');se(root.left,strings);se(root.right,strings);}}public String serialize(TreeNode root) {StringBuilder builder = new StringBuilder(); se(root,builder);return builder.toString();}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {String[] strings = data.split(",");return de(strings);}int cur=0;public TreeNode de(String[] strings){if(cur>=strings.length||strings[cur].equals("null")){cur++;return null; }else {TreeNode c = new TreeNode(Integer.parseInt(strings[cur]));cur++;c.left =de(strings);c.right=de(strings);return c;}}}// Your Codec object will be instantiated and called as such: // Codec codec = new Codec(); // codec.deserialize(codec.serialize(root)); 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的剑指 Offer 37. 序列化二叉树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 男人梦到一堆蛇是什么情况
- 下一篇: LCP 07. 传递信息