📅  最后修改于: 2023-12-03 14:57:13.553000             🧑  作者: Mango
在二叉树中获取节点的级别,可以采用递归和迭代两种方式。本篇文章介绍的是迭代法。
迭代法的本质是 BFS(广度优先搜索),通过队列来实现,让每个节点记录当前所在的层数,最终得到所有节点的级别。
以下是实现代码:
def get_node_level(root, target):
"""
获取二叉树中节点的级别
:param root: 根节点
:param target: 目标节点
:return: 目标节点的级别
"""
if not root:
return -1
# 初始化队列,将根节点入队
queue = [(root, 0)]
while queue:
# 出队队首节点
node, level = queue.pop(0)
# 判断当前节点是否为目标节点
if node.value == target:
return level
# 将当前节点的左右子节点和它们的级别入队
if node.left:
queue.append((node.left, level + 1))
if node.right:
queue.append((node.right, level + 1))
# 没有找到目标节点
return -1
通过迭代法,能够非常方便快捷地获取二叉树中节点的级别,时间复杂度和空间复杂度都非常优秀。建议使用该方法来解决相关问题。