- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 国广一叶,一路走来掌声不断.PDF
- 国投电力控股股份有限公司关于转让国投张家口股权的公告.PDF
- 国民收入在物质生产部门内部按三个方面进行分配一是以.ppt
- 国民经济核算体系三代国际指南的比较.PDF
- 国泰医疗财团法人国泰综合医院职能治疗伦理规範.PDF
- 国立竹山高中资料处理科103年度创意行销微电影研习营.PDF
- 国网河南省电力公司2013年第六批流标物资招标采购推荐的中.doc
- 国语课文阅读理解多元教学策略成果照片.PDF
- 国际化住区不是吼出来的,是长出来的!.PDF
- 国际医疗领导力(IHL).PDF
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)