我是算法的新手,我开发了这样的函数来查找输入序列的树高。
import sys, threading
class TreeHeight:
def read(self):
self.n = int(sys.stdin.readline())
self.parent = list(map(int, sys.stdin.readline().split()))
def compute_height(self):
# Replace this code with a faster implementation
maxHeight = 0
for vertex in range(self.n):
height = 0
i = vertex
while i != -1:
height += 1
i = self.parent[i]
maxHeight = max(maxHeight, height)
return maxHeight
def main():
tree = TreeHeight()
tree.read()
print(tree.compute_height())
threading.Thread(target=main).start()
就是这样:
5
4 -1 4 1 1
输出
3
因为有5个节点的数字从0到4,节点0是节点4的子节点,节点1是根节点,节点2是节点4的子节点,节点3是节点1和节点4的子节点是node1的子节点。此树的高度为3,因为从根1到叶2的路径上的顶点数是3
我的解决方案正在运行,但它没有针对深树进行优化。例如,程序崩溃输入100000。
在我的情况下,更好的解决方案是什么?