中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

長(zhǎng)沙小升初有什么做試卷的網(wǎng)站搜索廣告和信息流廣告區(qū)別

長(zhǎng)沙小升初有什么做試卷的網(wǎng)站,搜索廣告和信息流廣告區(qū)別,大連模板建站定制,興平網(wǎng)站建設(shè)本文涉及知識(shí)點(diǎn) 深度優(yōu)先搜索 廣度優(yōu)先搜索 深度優(yōu)先搜索匯總 圖論知識(shí)匯總 LeetCode297. 二叉樹(shù)的序列化與反序列化 序列化是將一個(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í)點(diǎn)

深度優(yōu)先搜索 廣度優(yōu)先搜索
深度優(yōu)先搜索匯總
圖論知識(shí)匯總

LeetCode297. 二叉樹(shù)的序列化與反序列化

序列化是將一個(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ù)中結(jié)點(diǎn)數(shù)在范圍 [0, 104] 內(nèi)
-1000 <= Node.val <= 1000

廣度優(yōu)先搜索

用深度優(yōu)先搜索也可以,只是麻煩得多。
按樹(shù)的層次存取,同層次年長(zhǎng)的在前。為了不處理負(fù)數(shù),保存時(shí)將數(shù)據(jù)加上1000。讀取后,減去1000。

保存(序列化)

que記錄待處理的節(jié)點(diǎn)。vector v記錄各節(jié)點(diǎn)值對(duì)應(yīng)的字符串,空節(jié)點(diǎn)對(duì)應(yīng)空字符串。任意節(jié)點(diǎn)只有0個(gè)或1個(gè)父節(jié)點(diǎn),所以無(wú)需visit數(shù)組,避免重復(fù)處理。
初始根節(jié)點(diǎn)入隊(duì),按順序從que取節(jié)點(diǎn),如果為空,則v追加空串。
否則:root的值轉(zhuǎn)成字符串追加到v中。左右子節(jié)點(diǎn)入隊(duì)。
v轉(zhuǎn)成成字符串,中間用逗號(hào)隔開(kāi)。

讀取(反序列化)

如果字符串為空,返回null。
建立根節(jié)點(diǎn),入隊(duì)。
依次出隊(duì),讀取數(shù)據(jù)。如果數(shù)據(jù)為空。忽略。
數(shù)據(jù)不為空,讀取數(shù)據(jù)到節(jié)點(diǎn),并為當(dāng)前節(jié)點(diǎn)建立左右子節(jié)點(diǎn),左右子節(jié)點(diǎn)入隊(duì)。

代碼

class Codec {
public:string serialize(TreeNode* root) {vector<string> v;queue<TreeNode*> que;que.emplace(root);while (que.size()) {auto cur = que.front();que.pop();if (nullptr == cur) { v.emplace_back(""); continue; }v.emplace_back(std::to_string(cur->val+1000));que.emplace(cur->left);que.emplace(cur->right);}string str;for (const auto& s : v) {str += s;str += ',';}str.pop_back();return str;}TreeNode* deserialize(string data) {if ("" == data) { return nullptr; }vector<int> nums;for (int left = 0, r = 0; left < data.length(); left = r) {int num = 0;while ((r < data.length()) && (',' != data[r])) {num = num * 10 + data[r] - '0';r++;}if (left == r) {nums.emplace_back(INT_MIN);}else {nums.emplace_back(num-1000);}r++;}if (',' == data.back()) {nums.emplace_back(INT_MIN);}TreeNode* root = new TreeNode(nums[0]);vector< TreeNode*> nodes;nodes.emplace_back(root);for (int i = 1; i < nums.size(); i++) {if (INT_MIN == nums[i]) {continue;}TreeNode* cur = new TreeNode(nums[i]);nodes.emplace_back(cur);const int inx = (i - 1) / 2;if (1 & i) {nodes[inx]->left = cur;}else {nodes[inx]->right = cur;}}return root;}
};

2023年6月版,就是用的深度優(yōu)先

也不是很麻煩。前序遍歷,用括號(hào)括起來(lái)一個(gè)子樹(shù),可讀性似乎好些。

class Codec {
public:// Encodes a tree to a single string.string serialize(TreeNode* root) {auto str = serializeInner(root);//std::cout << str << std::endl;return str;}// Decodes your encoded data to tree.TreeNode* deserialize(string data) {int iPos = 0;return deserialize(data, iPos);}
private:string serializeInner(TreeNode* root) {if (nullptr == root){return "()";}return "(" + std::to_string(root->val) + serialize(root->left) + serialize(root->right) + ")";}TreeNode* deserialize(string data,int& iPos) {if (iPos >= data.length()){return nullptr;}iPos++;if ( ')' == data[iPos]){iPos ++;return nullptr;}int iValue = 0;int iSign = 1;if ('-' == data[iPos]){iSign = -1;iPos++;}while (::isdigit(data[iPos])){iValue = iValue * 10 + data[iPos] - '0';iPos++;}iValue *= iSign;TreeNode* p = new TreeNode(iValue);p->left = deserialize(data, iPos);p->right = deserialize(data, iPos);iPos++;return p;}
};

擴(kuò)展閱讀

視頻課程

先學(xué)簡(jiǎn)單的課程,請(qǐng)移步CSDN學(xué)院,聽(tīng)白銀講師(也就是鄙人)的講解。
https://edu.csdn.net/course/detail/38771

如何你想快速形成戰(zhàn)斗了,為老板分憂,請(qǐng)學(xué)習(xí)C#入職培訓(xùn)、C++入職培訓(xùn)等課程
https://edu.csdn.net/lecturer/6176

相關(guān)推薦

我想對(duì)大家說(shuō)的話
《喜缺全書算法冊(cè)》以原理、正確性證明、總結(jié)為主。
按類別查閱鄙人的算法文章,請(qǐng)點(diǎn)擊《算法與數(shù)據(jù)匯總》。
有效學(xué)習(xí):明確的目標(biāo) 及時(shí)的反饋 拉伸區(qū)(難度合適) 專注
聞缺陷則喜(喜缺)是一個(gè)美好的愿望,早發(fā)現(xiàn)問(wèn)題,早修改問(wèn)題,給老板節(jié)約錢。
子墨子言之:事無(wú)終始,無(wú)務(wù)多業(yè)。也就是我們常說(shuō)的專業(yè)的人做專業(yè)的事。
如果程序是一條龍,那算法就是他的是睛

測(cè)試環(huán)境

操作系統(tǒng):win7 開(kāi)發(fā)環(huán)境: VS2019 C++17
或者 操作系統(tǒng):win10 開(kāi)發(fā)環(huán)境: VS2022 C++17
如無(wú)特殊說(shuō)明,本算法用**C++**實(shí)現(xiàn)。

http://www.risenshineclean.com/news/4712.html

相關(guān)文章:

  • 銀河盛世網(wǎng)站建設(shè)網(wǎng)站如何推廣
  • 寶安區(qū)做網(wǎng)站班級(jí)優(yōu)化大師學(xué)生版
  • 做網(wǎng)站要用到什么媒體資源
  • 怎么做網(wǎng)站的軟文推廣seo外包方案
  • java開(kāi)發(fā)是做什么的seoaoo
  • 網(wǎng)站搭建投稿平臺(tái)
  • 畫品展現(xiàn)手機(jī)網(wǎng)站seo排名優(yōu)化有哪些
  • 重慶網(wǎng)站備案大廳杭州網(wǎng)站seo優(yōu)化
  • 網(wǎng)頁(yè)制作做網(wǎng)站左側(cè)導(dǎo)航網(wǎng)站建設(shè)方案內(nèi)容
  • 網(wǎng)站建設(shè)規(guī)范搜狗搜索引擎推廣
  • 在線免費(fèi)貨源網(wǎng)站入口站長(zhǎng)之家下載
  • 房地產(chǎn)開(kāi)發(fā)公司取名網(wǎng)站關(guān)鍵詞優(yōu)化排名軟件
  • 做網(wǎng)站需要的大圖電商網(wǎng)站策劃
  • 汽車之家這樣的網(wǎng)站怎么做杭州網(wǎng)站運(yùn)營(yíng)十年樂(lè)云seo
  • 微網(wǎng)站制作價(jià)格金華關(guān)鍵詞優(yōu)化平臺(tái)
  • 可不可以用帝國(guó)cms做企業(yè)網(wǎng)站鄭州網(wǎng)站推廣公司
  • 建設(shè)銀行簽名通在網(wǎng)站哪里下載免費(fèi)制作自己的網(wǎng)頁(yè)
  • jq 網(wǎng)站模板技能培訓(xùn)網(wǎng)站
  • 西安哪家網(wǎng)絡(luò)公司做網(wǎng)站小說(shuō)百度搜索風(fēng)云榜
  • 安陽(yáng)工學(xué)院圖書館找做網(wǎng)站的書在哪免費(fèi)新聞源發(fā)布平臺(tái)
  • 彩票網(wǎng)站里的統(tǒng)計(jì)怎么做短視頻推廣渠道
  • 房地產(chǎn)網(wǎng)站怎么推廣優(yōu)化軟件下載
  • 2015年做啥網(wǎng)站能致富網(wǎng)絡(luò)營(yíng)銷策劃的概念
  • 網(wǎng)站建設(shè)要考關(guān)鍵詞查詢工具包括哪些
  • 網(wǎng)站首頁(yè)動(dòng)畫效果怎么弄推廣廣告
  • 怎么看網(wǎng)站日志文件seo官網(wǎng)優(yōu)化
  • 房屋 哪個(gè)網(wǎng)站做的最好百度上的廣告多少錢一個(gè)月
  • 一個(gè)獨(dú)立IP做幾個(gè)網(wǎng)站比較合適seo網(wǎng)站建設(shè)優(yōu)化
  • 人妖和美女做視頻網(wǎng)站如何建立公司網(wǎng)站網(wǎng)頁(yè)
  • 網(wǎng)站建設(shè)合同糾紛問(wèn)題百度廣告聯(lián)盟賺廣告費(fèi)