📅  最后修改于: 2023-12-03 15:41:27.297000             🧑  作者: Mango
在二叉树中,节点的级别指的是节点所在的层数。例如,根节点的级别为1,它的子节点级别为2,以此类推。
通过获取节点的级别,可以方便地实现二叉树的搜索、遍历等操作。
为了获取二叉树中节点的级别,我们可以采用递归的方式。具体实现如下:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def get_level(root: TreeNode, target_val: int, level: int) -> int:
"""
获取二叉树中节点的级别
:param root: 二叉树的根节点
:param target_val: 目标节点的值
:param level: 当前节点的级别
:return: 目标节点的级别,如果不存在返回0
"""
if root is None:
return 0
if root.val == target_val:
return level
left_level = get_level(root.left, target_val, level + 1)
right_level = get_level(root.right, target_val, level + 1)
if left_level != 0:
return left_level
if right_level != 0:
return right_level
return 0
TreeNode类:表示二叉树的节点。
get_level函数:实现了获取节点级别的功能。它接收三个参数:
它首先判断当前节点是否为空。如果为空,说明目标节点不存在,直接返回0。如果当前节点的值等于目标节点的值,说明找到了目标节点,直接返回当前的级别。
否则,递归查找左右子树中是否存在目标节点。如果左子树存在目标节点,返回左子树中目标节点的级别;否则,查找右子树。如果右子树中存在目标节点,返回右子树中目标节点的级别;否则,说明目标节点不存在,返回0。
node1 = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node5 = TreeNode(5)
node6 = TreeNode(6)
node7 = TreeNode(7)
node1.left = node2
node1.right = node3
node2.left = node4
node2.right = node5
node3.left = node6
node3.right = node7
level = get_level(node1, 5, 1)
print(level) # 输出2
在上面的示例中,我们创建了一个包含7个节点的二叉树。然后,调用get_level函数获取值为5的节点的级别,结果为2。
通过本文,我们学习了如何获取二叉树中节点的级别。这是实现二叉树搜索、遍历等操作的基础。本文采用了递归的方式实现,代码简单易懂,一定程度上解决了二叉树操作的难点。