📌  相关文章
📜  获取二叉树中节点的级别(1)

📅  最后修改于: 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函数:实现了获取节点级别的功能。它接收三个参数:

    • root:二叉树的根节点。
    • target_val:目标节点的值。
    • 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。

总结

通过本文,我们学习了如何获取二叉树中节点的级别。这是实现二叉树搜索、遍历等操作的基础。本文采用了递归的方式实现,代码简单易懂,一定程度上解决了二叉树操作的难点。