本文根据网页链接的视频进行学习,感谢up主!
线段树适用情况
题目给了一个数组(例如[1,5,4,1,6],通常数据比较多),对其中的部分区间进行多次更新,然后对部分区间进行多次查询(查询区间内的最大值/最小值/和),普通做法会超时,应使用线段树来做~
抽象化建树
建立二叉树,把数组存到二叉树中去
(例如,)
然后从叶子结点很容易得到我们需要查询的内容,然后不断将查询的结果往上传
(例如区间内的最大值/最小值/和,)
更新数据
更新a[2] = 3,查询相应的叶子结点更新数据,然后更新叶子结点的区间内的最大值/最小值/和,原路返回往上传更新区间查询的值