LeetCode 297. Serialize and Deserialize Binary Tree

來源:互聯網
上載者:User

標籤:

Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.

Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.

For example, you may serialize the following tree

    1   /   2   3     /     4   5
as "[1,2,3,null,null,4,5]", just the same as how LeetCode OJ serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.

Note: Do not use class member/global/static variables to store states. Your serialize and deserialize algorithms should be stateless.


I currently only wrote a recursive way.  I will update with a iterative way.

#include <string>#include <iostream>#include <sstream>using namespace std;struct TreeNode {  int val;  TreeNode* left;  TreeNode* right;  TreeNode(int value) : val(value), left(NULL), right(NULL) {}};/*  The tree is set up as        1    2    3  N  N  N  N*/TreeNode* setUpTree() {  TreeNode* root = new TreeNode(1);  root->left = new TreeNode(2);  root->right = new TreeNode(3);  return root;}void serializeTree(TreeNode* root, string& output) {  if(root == NULL) {output += "#"; return;}  else {    output += to_string(root->val);    serializeTree(root->left, output);    serializeTree(root->right, output);  }}void deserialize_root(TreeNode*& root, istringstream& in) {  char val;  in >> val;  if(val != '#') {    root = new TreeNode(val - '0');    deserialize_root(root->left, in);    deserialize_root(root->right, in);  }}void deserialize(TreeNode*& root, string input) {  int pos = 0;  istringstream in(input);  deserialize_root(root, in);}int main(void) {  TreeNode* root = setUpTree();  string output = "";  serializeTree(root, output);  cout << output << endl;  TreeNode* newRoot = NULL;  string newOutput = "";  deserialize(newRoot, output);  serializeTree(newRoot, newOutput);  cout << newOutput << endl;} 



LeetCode 297. Serialize and Deserialize Binary Tree

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.