先来说一下什么是序列化二叉树,就是把二叉树转换成一串序列。反序列化就是将一串序列构造成一个二叉树。
这个题我也不是很懂,为什么要这样写
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 };