首页 > 解决方案 > 无法在 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))

标签: python-3.xbinary-search-tree

解决方案


推荐阅读