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 };
  • 相关阅读:
    Android-View动画
    Android-RemoteView-桌面小部件
    系统的Drawable(四)-LayerListDrawable
    Android-Drawable(三)
    系统的Drawable(二)-Selector
    系统的Drawable(一)
    Android View事件分发-从源码分析
    打游戏要存进度-备忘录模式
    Java 内部类.md
    docker 常用 命令
  • 原文地址:https://www.cnblogs.com/neverland0718/p/11265752.html
Copyright © 2011-2022 走看看