当前位置: 首页 > news >正文

线段树c++

前言

在谈论到种种算法知识与数据结构的时候,线段树无疑总是与“简单”和“平常”联系起来的。而这些特征意味着,线段树作为一种常用的数据结构,有常用性,基础性和易用性等诸多特点。因此,今天我来讲一讲关于线段树的话题。

定义

首先,线段树是一棵“树”,而且是一棵完全二叉树。同时,“线段”两字反映出线段树的另一个特点:每个节点表示的是一个“线段”,或者说是一个区间。事实上,一棵线段树的根节点表示的是“整体”的区间,而它的左右子树也是一棵线段树,分别表示的是这个区间的左半边和右半边。

在此我们可以举一个例子来说明线段树通常的构造方法,以RMQ问题为例:

有N个数排成一排,每次询问某一段中的最小数。

构造的时候,让根节点表示区间[0,N-1],即所有N个数所组成的一个区间,然后,把区间分成两半,分别由左右子树表示。不难证明,这样的线段树的节点数只有2N-1个,是O(N)级别的,如图:

http://www.lryc.cn/news/12072.html

相关文章:

  • HTML+CSS+JavaScript学习笔记~ 从入门到精通!
  • LeetCode 430. 扁平化多级双向链表
  • 2.5|iot|第1章嵌入式系统概论|操作系统概述|嵌入式操作系统
  • 一文教会你使用ChatGPT画图
  • Java资料分享
  • yum/vim工具的使用
  • 内网渗透(三十九)之横向移动篇-pass the ticket 票据传递攻击(PTT)横向攻击
  • Unity性能优化之纹理格式终极篇
  • 【Spark分布式内存计算框架——Spark SQL】9. Dataset(下)RDD、DF与DS转换与面试题
  • Windows 环境下,cmake工程导入OpenCV库
  • 微服务架构设计模式-(16)重构
  • 数据结构:归并排序和堆排序
  • 基于easyexcel的MySQL百万级别数据的excel导出功能
  • js-DOM02
  • 作为一名开发工程师,我对 ChatGPT 的一些看法
  • Flask中基于Token的身份认证
  • 波奇学数据结构:时间复杂度和空间复杂度
  • 移动OA办公系统为企业带来便捷办公
  • 什么是Type-c口?Type-c口有什么优势?
  • Go开发者常犯的错误,及使用技巧 (1)
  • Servlet 作业
  • Hive高阶函数:explode函数、Lateral View侧视图、聚合函数、增强聚合
  • 信息系统服务管理
  • Windows10 安装ElasticStack8.6.1
  • gRPC 非官方教程
  • 6.2【人工智能与深度学习】RNN、GRU、远程服务管理、注意力、Seq2 搜索引擎和内存网络
  • 软件工程复习
  • 将Nginx 核心知识点扒了个底朝天(二)
  • 【PowerQuery】PowerBI 的PowerQuery支持的数据集成
  • scipy spatial transform Rotation库的源代码