树状数组的原理是什么?
一、树状数组的原理
原理
树状数组的原理是,树状数组为了节省空间,删去了不必要的结点,将结点数压缩到与数组长度相同。方案是这样的:数组的每个位置代表其在图中垂直向上追溯可以达到的较高的结点。
树状数组可以解决什么问题
可以解决大部分区间上面的修改以及查询的问题,例如1.单点修改,单点查询,2.区间修改,单点查询,3.区间查询,区间修改,换言之,线段树能解决的问题,树状数组大部分也可以,但是并不一定都能解决,因为线段树的扩展性比树状数组要强。
树状数组和线段树的区别在哪
有人会问了既然线段树的问题能够用树状数组解决而且线段树还比树状数组扩展性强,那为什么不直接用线段树呢?问的很好,树状数组的作用就是为了简化线段树,举个例子:一个问题可以用线段树解决写代码半个小时,但是用树状数组只需要10分钟,那么你会选择哪一个算法呢?没错,基于某些简单的问题,我们没必要用到功能性强但实现复杂的线段树(杀鸡焉用宰牛刀)。
优缺点
优点:修改和查询操作复杂度于线段树一样都是logN,但是常数比线段树小,并且实现比线段树简单
缺点:扩展性弱,线段树能解决的问题,树状数组不一定能解决。
延伸阅读:
二、完全二叉树
完全二叉树是一种特殊的二叉树,满足以下要求:
所有叶子节点都出现在 k 或者 k-1 层,而且从 1 到 k-1 层必须达到最大节点数;第 k 层可以不是满的,但是第 k 层的所有节点必须集中在最左边。 需要注意的是不要把完全二叉树和“满二叉树”搞混了,完全二叉树不要求所有树都有左右子树,但它要求:任何一个节点不能只有左子树没有右子树;叶子节点出现在最后一层或者倒数第二层,不能再往上。
猜你喜欢LIKE
相关推荐HOT
更多>>
chmod 755与chmod +x的区别?
一、chmod 755与chmod +x的区别chmod 755 的含义是将此文件的permission flags 改为 111(7) 101(5) 101(5)。也就是755 的含义所有用户都拥有详情>>
2023-10-14 21:44:16
在SWIFT中class与struct有哪些区别?
一、在SWIFT中class与struct的区别1、继承不同class可以继承自另一个class,而struct则不能。这意味着,一个class可以通过继承来获得父类的所有...详情>>
2023-10-14 20:36:56
Java开发主要是做什么?
一、Java开发主要的用途Java是一种高级编程语言,最初由Sun Microsystems在1995年推出。Java有着丰富的应用场景,被广泛应用于桌面应用程序、We...详情>>
2023-10-14 19:50:06
PHP能做什么?
一、PHP能做什么1、Web开发PHP是一种广泛用于Web开发的脚本语言,可以用来开发各种类型的Web应用程序,包括动态网站、博客、论坛、电子商务网站...详情>>
2023-10-14 19:15:46热门推荐
技术干货






