日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指Offer_61_序列化二叉树

發布時間:2023/12/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指Offer_61_序列化二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

請實現兩個函數,分別用來序列化和反序列化二叉樹

解題思路

使用前序遍歷,將遇到的結點添加到字符串中,遇到null則將一個#添加要序列化字符串中。反序列化時,每次讀取根結點,然后讀取其左結點,遇到#(null)時,返回上層。

實現

/*樹結點定義*/ public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}} /*實現*/ public class Solution {String Serialize(TreeNode root) {StringBuilder sb = new StringBuilder();serialize(root, sb);return sb.toString();}private void serialize(TreeNode root, StringBuilder sb) {if (root == null) {sb.append("#,");return;}sb.append(root.val + ",");serialize(root.left, sb);serialize(root.right, sb);}private class Result{TreeNode node;int pos;Result(TreeNode node, int pos){this.node = node;this.pos = pos;}}TreeNode Deserialize(String str) {if (str == null || str.length() <= 0) return null;String[] strs = str.split(",");Result re = deserialize(strs, 0);return re.node;}private Result deserialize(String[] str, int i) {TreeNode root = null;if (i < str.length - 1){if ("#".equals(str[i])) return new Result(null, i+1);root = new TreeNode(Integer.parseInt(str[i]));Result l = deserialize(str, i + 1);root.left = l.node;Result r = deserialize(str, l.pos);root.right = r.node;return new Result(root, r.pos);}return new Result(root, i+1);} }

轉載于:https://www.cnblogs.com/ggmfengyangdi/p/5828616.html

總結

以上是生活随笔為你收集整理的剑指Offer_61_序列化二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。