Data structures 为什么在下面的段树代码中递归返回非类型?

Data structures 为什么在下面的段树代码中递归返回非类型?,data-structures,tree,segment,recursive-datastructures,segment-tree,Data Structures,Tree,Segment,Recursive Datastructures,Segment Tree,我尝试使用python构建段树,使用它我可以从索引(l,r)中获得数组“arr”中的数字总和。我得到的预期树是正确的,但在调用getSum()时显示错误 来自math import ceil,log2 def生成(arr、树、节点、开始、结束): 如果开始=结束: 树[节点]=arr[开始] 返回树[节点]; mid=(开始+结束)//2 树[节点]=构建(arr,树,2*节点+1,开始,中间)+构建(arr,树,2*节点+2,中间+1,结束) 返回树[节点] def getSum(树、节点、开

我尝试使用python构建段树,使用它我可以从索引(l,r)中获得数组“arr”中的数字总和。我得到的预期树是正确的,但在调用getSum()时显示错误

来自math import ceil,log2
def生成(arr、树、节点、开始、结束):
如果开始=结束:
树[节点]=arr[开始]
返回树[节点];
mid=(开始+结束)//2
树[节点]=构建(arr,树,2*节点+1,开始,中间)+构建(arr,树,2*节点+2,中间+1,结束)
返回树[节点]
def getSum(树、节点、开始、结束、l、r):
如果(格式副本):
返回0

elif r>=end和l您没有返回子树的总和。正因为如此,它一个也没有返回。你应该这样写

    return getSum(tree,2*node + 1,start,mid,l,r) + getSum(tree,2*node+2,mid+1,end,l,r)
    return getSum(tree,2*node + 1,start,mid,l,r) + getSum(tree,2*node+2,mid+1,end,l,r)