📜  打印二叉树的所有质数(1)

📅  最后修改于: 2023-12-03 15:39:41.029000             🧑  作者: Mango

打印二叉树的所有质数

在二叉树中,如果节点的值是质数,那么就需要将它打印出来。下面是实现的思路:

  1. 定义一个函数 is_prime(),用于判断一个数字是否是质数:从2到该数的平方根范围内逐个判断是否能被整除;
  2. 定义一个递归函数 print_prime(),实现对二叉树的遍历,如果节点的值是质数,就打印出来;
  3. 在主函数中,调用 print_prime() 函数,将整棵二叉树遍历一遍。

下面是完整的实现代码:

# 定义二叉树节点类
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
   
# 判断是否为质数
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

# 对二叉树进行遍历
def print_prime(root):
    if root:
        if is_prime(root.val):
            print(root.val)
        print_prime(root.left)
        print_prime(root.right)

# 主函数
def main():
    # 构建一个二叉树
    root = TreeNode(5)
    root.left = TreeNode(3)
    root.right = TreeNode(7)
    root.left.left = TreeNode(2)
    root.left.right = TreeNode(4)
    root.right.left = TreeNode(6)
    root.right.right = TreeNode(9)

    # 遍历二叉树并打印出所有的质数
    print_prime(root)

if __name__ == "__main__":
    main()

上述代码输出的结果为:

5
3
2
7

注:以上输出不是markdown格式,是纯文本格式。该代码的输出会根据实际的二叉树节点情况而定。