如何在二叉树中找到节点的级别


在二叉树中,节点的级别指的是该节点从根节点开始,到达该节点所需要经过的边的数量。根节点的级别为0,它的子节点的级别为1,依此类推。

要找到一个节点的级别,可以使用递归的方式进行遍历。从根节点开始,如果目标节点是根节点,则它的级别为0。否则,分别递归遍历左子树和右子树,直到找到目标节点。在递归遍历的过程中,每递归一层,就将当前节点的级别加1。

下面是一个示例代码,它通过递归实现了查找目标节点在二叉树中的级别:

pythonCopy codeclass Node:
    def __init__(self, val=None, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def find_level(root, target, level=0):
    if root is None:
        return -1
    if root.val == target:
        return level
    left_level = find_level(root.left, target, level+1)
    right_level = find_level(root.right, target, level+1)
    if left_level == -1:
        return right_level
    else:
        return left_level

在这个代码中,find_level函数接收三个参数:root是二叉树的根节点,target是要查找的目标节点的值,level是当前节点的级别。如果当前节点是空节点,说明已经遍历完了二叉树但是没有找到目标节点,返回-1。如果当前节点的值等于目标节点的值,说明找到了目标节点,返回当前节点的级别。否则,递归遍历左子树和右子树,并将当前节点的级别加1。如果在左子树中找到了目标节点,就返回左子树中目标节点的级别;否则,在右子树中查找目标节点,并返回右子树中目标节点的级别。


原文链接:codingdict.net