※剑指offer系列50:序列化二叉树
Posted neverland0718
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了※剑指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 ;
以上是关于※剑指offer系列50:序列化二叉树的主要内容,如果未能解决你的问题,请参考以下文章