資料結構 二叉樹的序列化 反序列化

2021-09-28 13:12:37 字數 1247 閱讀 2232

前序遍歷、中序遍歷、後序遍歷、層序遍歷

#include #include #include #include using namespace std;

class node

};

(1)前序遍歷 - 序列化

void front_seq(node *root, queue&q) 

string s = to_string(root->val);

q.push(s);

front_seq(root->left, q);

front_seq(root->right, q);

}

(2)前序遍歷 - 反序列化

node* front_reverse(queue&q) 

int t = stoi(s);

node *p = new node(t);

p->left = front_reverse(q);

p->right = front_reverse(q);

return p;

}

(1)層序遍歷 - 序列化

void level_seq(node *root, queue&q) 

queueqt;

qt.push(root);

string s = to_string(root->val);

q.push(s);

while (!qt.empty())

else

if (qf->right != null)

else

} }}

(2)層序遍歷 - 反序列化

node *level_reverse(queue&q) 

queueqt;

node *root = new node(stoi(s));

qt.push(root);

// 補充佇列中每個節點的左右節點

while (!qt.empty())

else

s = q.front();

q.pop();

if (s != "#")

else

} return root;

}

序列化 反序列化二叉樹

設計乙個演算法能夠實現序列化和反序列化一棵二叉樹 注意,不是二叉搜尋樹bst 這裡的序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。前一篇文章儲存二叉搜尋樹到檔案中 解決了儲存一棵二叉搜尋樹到檔案中的問題,但是由於本題目的意思是要把一棵二叉樹儲存到檔案中並...

前序序列化 反序列化二叉樹

序列化 vectorserializetreepreorder treenode root preorder root return ans 反序列化 treenode deserializetreepreorder vector a,int i leetcode 331 verify preord...

序列化和反序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。基本思想很簡單,序列化就是用某一種遍歷方法將二叉樹元素儲存在字串陣列中,當然要乙個個元素分離,分得清誰是誰。反序列化就是把儲存在字串陣列中的元素進行重構,使之成為二叉樹。我們不妨選擇前序遍歷的思想進行搜尋與重構。本題的關鍵是如何對元素進行儲存,可以放在...