📅  最后修改于: 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
即打印出了高度为素数的节点。