python-3.x - 无法在 BST 级别找到所有节点的平均值
问题描述
我试图找到 BST 同一级别的所有节点的总和。但是我的 count_sum 和 total_elements_at_level 变量没有更新。我知道这很愚蠢,但我无法理解它。它正在打印出 0。
class Node(object):
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BST(object):
def __init__(self, root):
self.root = Node(root)
def find_average_at_level(self, level):
current = self.root
current_level = 1
total_elements_at_level = 0
current_sum = 0
self.find_average_helper(current, current_level, level, current_sum, total_elements_at_level)
return current_sum / total_elements_at_level
def find_average_helper(self, current, current_level, level, current_sum, total_elements_at_level):
if current:
current_level += 1
if current_level == level:
current_sum += current.value
total_elements_at_level += 1
else:
self.find_average_helper(current.left, current_level, level, current_sum, total_elements_at_level)
self.find_average_helper(current.right, current_level, level, current_sum, total_elements_at_level)
# Set up tree
tree = BST(4)
# Insert elements
tree.insert(2)
tree.insert(1)
tree.insert(3)
tree.insert(5)
# Check search
# Should be True
#print tree.search(4)
# Should be False
#print(tree.search(6))
print(tree.find_average_at_level(3))
解决方案
推荐阅读
- postgresql - Postgres,如何迭代访问数据库中的所有表,子查询?
- docker - Kubernetes 描述 pod - 来自服务器的错误 (NotFound)
- android - SectionedRecyclerViewAdapter 动画
- amazon-web-services - 如何将代理添加到 s3,以便我可以使用托管在 EC2 实例中的服务?
- docker - 错误提案响应不成功,错误代码 500,名称为“cch16”的 msg 链码已存在
- javascript - Selenium-webdriver 无法使用 CSS 选择器找到元素
- javascript - 创建收藏夹列表 - 如何在单击时将项目从一个列表复制到另一个列表?
- c# - System.Collections.Generic.KeyNotFoundException 与元组键
- c++ - getline()函数的while循环如何在每次while循环结束后引入新的文本行
- python - 选择带有硒的选项