[剑指offer]序列化二叉树
2016-06-04 09:14
330 查看
题目描述
请实现两个函数,分别用来序列化和反序列化二叉树分析:基本思想是先序遍历二叉树,再从先序遍历的结果反序列化二叉树
代码:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
vector<int> v;
void helperS(TreeNode* root){
if(!root) v.push_back(INT_MAX);
else{
v.push_back(root->val);
helperS(root->left);
helperS(root->right);
}
}
TreeNode* helperD(int*& num) {
if(*num==INT_MAX){
++num;
return NULL;
}
TreeNode* p=new TreeNode(*num);
++num;
p->left=helperD(num);
p->right=helperD(num);
return p;
}
public:
char* Serialize(TreeNode *root) {
v.clear();
helperS(root);
int *ret=new int[v.size()];
for(int i=0;i<v.size();i++){
ret[i]=v[i];
}
return (char*)ret;
}
TreeNode* Deserialize(char *str) {
int* p=(int*)str;
return helperD(p);
}
};
相关文章推荐
- js判断当前浏览器是否为IE
- 使用JavaScript代码为博客园个人博客页面自动添置目录
- 第一章 JavaScript简介
- 第四章 深入JSP技术
- 关于BufferefReader.readLine()方法的理解
- 深入理解JS异步编程五(脚本异步加载)
- DIV+CSS----Div的定位
- jquery点击事件遇到的小bug
- 深入理解JS异步编程四(HTML5 Web Worker)
- DIV+CSS----Div概念
- LeetCode--No.237--Delete Node In a Linked List
- 我所亲见的前端技术变革
- 一些jquery技巧
- js获取元素的外链样式
- 再谈js的作用域
- 二、CSS笔记
- js单击事件及超链接触发失败原因之一(经验分享)
- 日常css技巧小结(2)-- inline-block带来的迷惑
- 《CSS3实战》笔记--选择器(二)
- 极客学院之javascript高级技巧