data-structures - 展开树中范围总和的伪代码?
问题描述
所以我试图实现一个函数: func rsum(root, left, right) 这个函数接受一个范围的值,然后在一个展开树中返回该树中所有键的总和。我希望它在 O(log n) 中工作。
我试过这个:
s = 0
if self.root is None:
return 0
node = self.root
if left <= node.value <= right:
s += node.value
if node.value >left and node.left is not None :
self.root = node.left
s += self.range_sum(left, right)
if node.value < right and node.right is not None:
self.root = node.right
s += self.range_sum(left, right)
return s
虽然它在 O(log n) 中不起作用,但有更好的方法吗?
解决方案
推荐阅读
- pandas - 选择只有数字的列,没有字符串
- python - django 模板中变量的 var_dump
- java - 给定二维整数数组,找到一条递归地求和给定数字的路径
- python - 从 scipy.misc 导入此函数时,如何解决“无法导入名称 'imresize' 错误?
- c# - How to set timer of 5 min to do certain operation in app and if timeouts, raise another event to do other task
- c# - 如何使用 JSON.NET 进行序列化并忽略可为空的结构值
- three.js - THREE.js 识别单击一个几何体(合并几何体)
- python - Macro metrics (recall/F1...) for multiclass CNN
- javascript - 选中多个复选框时更改按钮文本
- c# - WPF ListView GridViewColumn 宽度 50% 的空间