手写代码:二叉树序列化反序列化

2019-06-0507:56:23数据结构与算法Comments2,336 views字数 618阅读模式

> 序列化:必须保存一个中序遍历结果,然后外加一个前序或者后序遍历结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

>反序列化:根据两次遍历生成的结果恢复二叉树,代码如下(前序和中序):文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

6文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

7文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

8文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

9文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

10文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

11文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

12文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

13文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

14文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

15文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

16文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

17文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

18文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

19文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

20文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

21

```TreeNode* helper(vector<int>pre,int startPre,int endPre,vector<int>in,int startIn,int endIn)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

{文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

if(startPre>endPre||startIn>endIn)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

return nullptr;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

TreeNode * root=new TreeNode(pre[startPre]);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

for(int i=startIn;i<=endIn;++i)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

{文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

if(in[i]==pre[startPre])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

{文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

root->left=helper(pre,startPre+1,startPre+i-startIn,in,startIn,i-1);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

root->right=helper(pre,i-startIn+startPre+1,endPre,in,i+1,endIn);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

break;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

return root;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

{文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

TreeNode *root=helper(pre,0,pre.size()-1,vin,0,()-1);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

return root;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html

}

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/13427.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/13427.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定