zoukankan      html  css  js  c++  java
  • ※剑指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 };
  • 相关阅读:
    spark 程序 TopN FileSort SecondarySort 的出错解决办法
    预报温度和体感温度不是一回事
    搜索引擎 搜索技巧
    scrapy 爬虫框架
    scala-sbt
    英语削笔机
    php 一句话木马
    [CS充实之路] CS50 WEEK 1
    UBUNTU 16.04 编译 OPENJDK8
    使用logrotate分割Tomcat的catalina日志
  • 原文地址:https://www.cnblogs.com/neverland0718/p/11265752.html
Copyright © 2011-2022 走看看