线段树(区间树)

线段树(区间树)

​ 为什么要有线段树?比如现在有一个数组,要计算和查赵这个数组中某个区间的值的和,那么它的时间复杂度就是O(n),要遍历数组;而如果使用树结构,他的时间复杂度为O(logn);差距还是很大的

什么是线段树?

image-20210823134438439

特点:

  • ​ 线段树不是完全二叉树image-20210823135312682

  • 线段树也是平衡二叉树

用数组实现,开辟空间,定义左子树和右子树

image-20210824101136411

创建线段树:

线段树的区间查询操作

image-20210824093607084

线段树的更新操作

image-20210824095553046

​ Lazy更新

链式动态线段树

不浪费空间

时间复杂度

image-20210824095756869

Others:

  • leetcode第303题区域和检查
  • leetcode第307题区域和检查美版UPDATe
  • 树状数组(了解)BIT
  • RMQ问题
-------------本文结束感谢您的阅读-------------