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)的。

  • 相关阅读:
    原生JS回去顶部
    5月31日の勉強レポート
    5月30日の勉強レポート
    (转)日语自我介绍大全
    5月29日の勉強レポート
    5月28日の勉強レポート
    5月27日の勉強レポート
    5月26日の勉強レポート
    5月25日の勉強レポート
    5月24日の勉強レポート
  • 原文地址:https://www.cnblogs.com/dj0325/p/8515201.html
Copyright © 2011-2022 走看看