📜  查找父数组表示的二叉树的高度(1)

📅  最后修改于: 2023-12-03 15:26:38.647000             🧑  作者: Mango

查找父数组表示的二叉树的高度

在二叉树数据结构中,有一种表示方法是使用一个父数组来表示。这种表示方法将每个节点的父节点信息记录在数组中,然后可以根据这个数组来重建整棵二叉树。

如果我们想要算出这个二叉树的高度,我们需要遍历它。一种简单的方法是使用递归,对每个节点的左子树和右子树进行递归计算,然后取最大值再加一。

下面是一个示例代码,它实现了上述递归算法。代码中使用了一个 getParent 函数,它用来获得每个节点的父节点:

def height(parent):
    def dfs(node, depth):
        if not node:
            return depth
        return max(dfs(parent[node][0], depth + 1), dfs(parent[node][1], depth + 1))
    return dfs(0, 0)

def getParent(n, parent):
    ans=[]
    ans.append(-1)
    for i in range(1, n):
        ans.append(parent[i])
    return ans

n=int(input())
parent=list(map(int, input().split()))

# 将每个节点的父节点信息记录在 parent 数组中
# 根据节点的深度计算出这棵二叉树的高度
print(height(getParent(n, parent)))

这里的 getParent 函数是一个将输入的父数组转化成一个从1开始的下标的父数组,具体可以参照题目输入格式。

使用这个函数,可以将父数组表示的二叉树的高度计算出来。