※剑指offer系列50:序列化二叉树

先来说一下什么是序列化二叉树,就是把二叉树转换成一串序列。反序列化就是将一串序列构造成一个二叉树。

这个题我也不是很懂,为什么要这样写

 1 class Solution {
 2 public:
 3     vector<int> aux;
 4     void treetovec(TreeNode * root)
 5     {
 6         if (!root)//空节点
 7         {
 8             aux.push_back(0xFFFFFFFF);
 9         }
10         else {
11             aux.push_back(root->val);
12             treetovec(root->left);//前序遍历
13             treetovec(root->right);
14         }
15         
16     }
17     TreeNode* vectotree(int * &c)
18     {
19         if (*c== 0xFFFFFFFF)//空节点
20         {
21             c++;
22             return NULL;
23         }
24         else {
25             TreeNode *cur = new TreeNode(*c);//这一句是什么?
26                                              //用一个int型的变量来初始化一个treenode
27             c++;
28             cur->left = vectotree(c);
29             cur->right = vectotree(c);
30             return cur;
31         }
32     }
33     char* Serialize(TreeNode *root) //序列化二叉树
34     {
35         treetovec(root);
36         int len = aux.size();
37         int *res = new int[len];
38         for (int i = 0; i < len; i++)
39             res[i] = aux[i];
40         return (char*)res;
41 
42     }
43     TreeNode* Deserialize(char *str) //反序列化二叉树
44     {
45         int* c = (int *)str;
46         return vectotree(c);
47     }
48 };
原文地址:https://www.cnblogs.com/neverland0718/p/11265752.html