在一维数组中以完全二叉树方式存储线段树的空间分析.PDF

在一维数组中以完全二叉树方式存储线段树的空间分析.PDF

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在一维数组中以完全二叉树方式存储线段树的空间分析.PDF

在一维数组中以完全二叉树方式存储线段树的空间分析 我们大家存储线段树的方式无非两种: 二叉链表 一维数组完全二叉树 二叉链表优点是节省空间,缺点是编程复杂度大,执行效率较低,空间复杂度为2N 在一维数组以完全二叉树方式存储线段树的编程复杂度小,执行效率较高,但浪费空间 长期以来,我和我校的OIer一直不知以一维方式存储线段树到底需要开多大的数组.今天正好有些闲暇的时间,写了个小程序,分 析了下一维线段树在一维方式存储下到底需要占用多少空间.经本文所述方式计算约为4N 先来补习一下完全二叉树的相关知识: 完全二叉树在一维数组中这样表示:根节点为1,其左子树为2,右子树为3. 根节点为N,其左孩子为2N,右孩子为2N+1 具体实现方式可参考我的一篇题解,这里使用的就是完全二叉树方式 像线段树这样区间长度并不一定是 的二叉树,其占用空间为 2的(最深线段的深度)次幂,就给线段树的空间占用造成了很大的 不确定性.在我们学校,关于线段树的空间占用,说法大致有以下几种 极端保守的:10N 保守(我):5N 乐观:3N 极乐观:2N 然而大家写的是后大部分都是尽量多开,对于其空间占用一直没有定论,现在我来给个定论: 先上一幅图: 完全二叉树方式存储线段树的空间占用 可以看到,空间复杂度其实是最好 ,最差是 ,最好情况出现在略小于 附近,最坏情况出现在略大于 附近,由此 看来,我们以后存线段树大概需要开4N+100 的数组就可以了. 附线段树空间计算程序: 输入区间长度,他来告诉你要开多大数组. Download CountSegment.cpp ? 1 /*线段树空间计算程序 Power By:Comzyh*/ 2 #include iostream 3 #include cstdio 4 #include cstdlib 5 using namespace std; 6 struct segment { 7 int b,e; 8 }; 9 segment seg[5000000]; 10 int N; 11 int Nnode,LastNode; 12 void build(int b, int e, int s); 13 int main(){ 14 while (1){ 15 printf(Please Enter Interval length 请输入区间长度:\n); 16 scanf(%d,N); 17 if (N==0)return 0; 18 Nnode=0; 19 LastNode=0; 20 build(1,N,1); 21 printf(Complete binary tree, has build %d Nodes ,the last node numbered %d\n %d 最后 22 一个节点:%d\n,Nnode,LastNode,Nnode,LastNode); 23 //system(pause); 24 } 25 } 26 void build(int b, int e, int s){ 27 Nnode++; 28 if (sLastNode) 29 LastNode=s; 30 seg[s].b=b; 31 seg[s].e=e; 32 if (b==e) 33 return; 34 int mid =(b+e)1; 35 build(b,mid,s1); 36 build(mid+1,e,(s1)+1); } 附线段树空间占用分析程序(打表),上面那个图的表就是它计算出来的: Download CountSegmentFile.cpp

您可能关注的文档

文档评论(0)

thl1006 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档