📌  相关文章
📜  计算给定树中权重为质数的节点(1)

📅  最后修改于: 2023-12-03 14:57:34.819000             🧑  作者: Mango

计算给定树中权重为质数的节点

本程序旨在计算给定树中权重为质数的节点,并以 Markdown 格式返回结果。以下是程序的介绍和示例使用方法。

算法思路
  1. 定义一个函数 is_prime(),用于判断一个数是否为质数。
  2. 定义一个函数 find_prime_nodes(),用于递归地遍历树的所有节点,并找出权重为质数的节点。
    • 对于当前节点,如果其权重为质数,则将其加入结果集。
    • 对于当前节点的每个子节点,递归调用 find_prime_nodes()
  3. 根据给定的树结构,调用 find_prime_nodes() 函数得到结果。
代码实现
import math

def is_prime(num):
    """
    判断一个数是否为质数
    """
    if num < 2:
        return False
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True

def find_prime_nodes(node, result):
    """
    递归地找出树中权重为质数的节点
    """
    if is_prime(node.weight):
        result.append(node)
    for child in node.children:
        find_prime_nodes(child, result)

# 调用示例

root_node = Node(weight=10, children=[
    Node(weight=5),
    Node(weight=7, children=[
        Node(weight=2),
        Node(weight=9)
    ]),
    Node(weight=12, children=[
        Node(weight=3),
        Node(weight=16)
    ])
])

result = []
find_prime_nodes(root_node, result)

# 输出结果
for node in result:
    print(node.weight)
结果

本次运行的结果如下:

5
7
2
3

以上结果表示给定树中权重为质数的节点分别为 5、7、2 和 3。