看动画学算法之:线段树-segmentTree

线段树是一种二叉搜索树,用于区间查询和更新。本文以最小线段树为例,详细介绍了线段树的构建、搜索和更新操作,并提供了Java实现代码,帮助读者理解线段树的工作原理和应用。
摘要由CSDN通过智能技术生成

简介

什么是线段树呢?线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。

线段树的每个节点都表示一个区间,而根据线段树的不同特征,线段树的节点值可以表示这个区间里的最小值,最大值或者sum值等等。

最小线段树

下面我们以最小线段树为例来说明一下线段树的特性:

如果原始数据是一个数组,我们也以数组来表示线段树。

假设生成的线段树的起点index=1,并且对线段树中的每个非叶子节点index k来说,它的左子节点index=2* k, 而它的右子节点index=2* k+1 。

上图中,标黄色的是原始数组,总共有七个元素。

上面的树形结构就是根据原始数组构建出来的线段树了。

因为是最小线段树,每个非叶子节点存储的都是子节点中的最小值。

举个例子: index=1 的元素表示的是原始数组范围0-6,并且它的值是11,表示的是原始数组0-6范围中,最小的值是11。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flydean程序那些事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值