在给定父数组的情况下查找树的深度

时间:2014-06-15 07:14:34

标签: arrays algorithm tree

给出父数组P,其中P [i]表示树中第i个节点的父节点(树是通用的)。 root的父表示为-1。我需要找到树的高度/深度。

示例:P = {-1,0,1,6,6,0,0,2,7}。所以P [1] = 0表示节点1的父节点为0,依此类推。

我的方法:

1. Sort P in O(nlogn). This gives P = {-1,0,0,0,1,2,6,6,7}
2. Scan through the array. 
   If a change is observed on going from index i to i+1 then increment depth (depth++).
   eg When going from index 3 to index 4 of sorted P, there is a change from 0 to 1. So increment depth.
   This scanning takes O(n) time
3. depth - 1 is the depth of the tree.

这种方法似乎适用于我尝试的例子,但我不确定我是否错过了可能失败的案例。有人可以提供反例吗?感谢

1 个答案:

答案 0 :(得分:2)

这是不正确的。考虑两个数组:{-1,0,0,1,1}和{-1,0,0,1,2}。它们的变化数量不同,但这两棵树的高度相同。