</pre><pre name="code" class="python">#coding=gbk
#线段树
class Tree(object):
def __init__(self,l,r):
self.l = l
self.r = r
self.value = 0
self.left = None
self.right = None
if l < r:
mid = (l + r)/2
self.left = Tree(l,mid)
self.right = Tree(mid+1,r)
def set_value(self,p,value):
if self.l == self.r:
self.value = value
return
mid = (self.l + self.r)/2
if p <= mid:
self.left.set_value(p,value)
else:
self.right.set_value(p,value)
self.push_up()
def push_up(self):
self.value = self.left.value + self.right.value
def query(self,x,y):
print "query",x,y,'\t',(self.l + self.r)/2,'\t',self.l,self.r,self.value
if x <= self.l and y>=self.r:
return self.value
if self.l == self.r:
return self.value
mid = (self.l + self.r)/2
if
python版线段树
最新推荐文章于 2024-04-23 22:04:09 发布
本文介绍了Python中线段树的实现,包括初始化、设置值、查询等操作。线段树是一种高效处理区间问题的数据结构,代码展示了如何在给定区间内进行更新和查询操作。
摘要由CSDN通过智能技术生成