zoukankan      html  css  js  c++  java
  • 线段树

      线段树,也叫区间树(interval tree),它在各个节点保存一条线段(即子数组)。设数列A包含N个元素,则多线段树的根节点表示整个区间A[1,N],左孩子表示区间A[1,(1+N)/2],右孩子表示区间A[(1+N)/2+1,N],不断递归,直到叶子节点,叶子节点只包含一个元素。树的深度

      线段树有如下特征:

        1.线段树是一个完全二叉树;

        2.线段树的深度不超过logL,L是区间的长度;

        3.线段树把一个长度为L的区间分成不超过2logL 条线段;

      线段树的基本操作有构造线段树、区间查询和区间修改。

      线段树通常解决和区间统计有关的问题。比如某些数据可以按区间进行划分,按区间动态进行修改,而且还需要按区间多次进行查询,那么使用线段树可以达到较快查询速度。

      用线段树解题,关键是要想清楚每个节点要存哪些信息(当然区间起点和终点,以及左右孩子指针是必须的),以及这些信息如何高效查询,更新。不要一更新就更新到叶子节点,那样更新操作的效率最坏有可能O(N)的。

  • 相关阅读:
    一、异常
    自控力_第三章
    Vocabulary Recitation 2020/05/05
    Vocabulary Recitation 2020/05/04
    Vocabulary Recitaion 2020/05/03
    Vocabulary Recitation 2020/05/01
    最大子序列和
    Vocabulary Recitation 2020/04/29
    自控力_第二章
    Vocabulary Recitation 2020/04/27
  • 原文地址:https://www.cnblogs.com/dj0325/p/8515201.html
Copyright © 2011-2022 走看看