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