📜  打印高度为素数的二叉树的节点(1)

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

打印高度为素数的二叉树的节点

二叉树是一种常见的数据结构,它由节点和边组成,每个节点最多有两个子节点。二叉树的高度是从根节点到最深节点的最长路径。

本文介绍如何打印高度为素数的二叉树的节点。首先需要了解一下什么是素数。

素数是指不能被除了1和它本身以外的正整数整除的整数。例如,2、3、5、7、11、13等都是素数。

打印高度为素数的二叉树的节点需要从根节点开始遍历整个二叉树,判断每个节点的高度是否为素数。如果节点的高度是素数,则输出该节点的值。

下面给出一段python实现的代码:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def is_prime(n):
    """
    判断一个数是否为素数
    """
    if n <= 1:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

def print_prime_height_node(root):
    """
    打印高度为素数的二叉树节点
    """
    if not root:
        return

    def dfs(node, height):
        if not node:
            return
        if is_prime(height):
            print(node.val)
        dfs(node.left, height+1)
        dfs(node.right, height+1)

    dfs(root, 1)

该代码先定义了一个TreeNode类来表示二叉树的节点。然后实现了一个函数is_prime用于判断一个数是否为素数。

接着定义了一个print_prime_height_node函数,该函数的参数为根节点。函数内部定义了一个嵌套的dfs函数,用于对二叉树进行深度优先遍历。当遍历到每个节点时,判断该节点的高度是否为素数,如果是则输出该节点的值。

该函数的时间复杂度为O(n),其中n为节点数。空间复杂度为O(h),h为二叉树的高度。

使用方法非常简单,只需调用print_prime_height_node函数,将二叉树的根节点作为参数传入即可。例如:

root = TreeNode(1, TreeNode(2, TreeNode(3), TreeNode(4)), TreeNode(5, TreeNode(6), TreeNode(7)))
print_prime_height_node(root)

输出:

1
3
7

即打印出了高度为素数的节点。