国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

序列化二叉樹

2019-11-08 02:06:17
字體:
來源:轉載
供稿:網友
題目描述

請實現兩個函數,分別用來序列化和反序列化二叉樹

IDEA

序列化指的是將一棵二叉樹保存到文件中,反序列化就是從文件中讀取二叉樹結點值重構原來的二叉樹。

先序遍歷的代碼可以完成序列化二叉樹的工作。

1.去掉const屬性:const_case<char*> (&num),因為不能把一個const變量直接賦給一個非const變量,必須要轉換。

const char m = 't';  const char *cm = &m;  char *n = const_cast<char*>(cm);  

2.const char *c_str()

c_str()函數返回一個指向正規c字符串的指針,內容和string類的本身對象是一樣的,通過string類的c_str()函數能夠把string對象轉換成c中的字符串的樣式;

CODE

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class Solution {public:    char* Serialize(TreeNode *root) {        if (root == NULL)            return NULL;        string str;        Serialize1(root,str);        return const_cast<char*>(str.c_str());    }    void Serialize1(TreeNode *root,string &str)    {        if (root == NULL) {            str+="#,";            return;        }        string tmp=to_string(root->val);        tmp.push_back(',');        str+=tmp;        Serialize1(root->left,str);        Serialize1(root->right,str);    } 	TreeNode* Deserialize(char *str) {        if (str==NULL||*str =='/0') {            return NULL;        }        int i=0;        return deserialize1(str,i);    }	TreeNode *deserialize1(char *str,int &num)    {        if (str[num] =='#') {            num+=2;            return NULL;        }        int val=0;        while (str[num]!= ','&&str[num] != '/0') {            val = val*10+str[num]-'0';            num++;        }        num++;        TreeNode *root=new TreeNode(val);        root->left=deserialize1(str,num);        root->right=deserialize1(str,num);        return root;    }};


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华池县| 庆安县| 屏南县| 阿鲁科尔沁旗| 两当县| 大新县| 河西区| 灌南县| 宁都县| 招远市| 龙南县| 阿尔山市| 富裕县| 岢岚县| 元谋县| 彭州市| 永登县| 师宗县| 株洲县| 商都县| 肇庆市| 通化县| 同江市| 玉林市| 临漳县| 邯郸县| 长泰县| 凤凰县| 卢氏县| 鄢陵县| 锡林郭勒盟| 枣阳市| 界首市| 迁西县| 德昌县| 布拖县| 萨迦县| 岳阳县| 福清市| 仁寿县| 梧州市|