更快地实现树高功能

时间:2016-05-11 05:31:44

标签: python algorithm python-3.x tree

我是算法的新手,我开发了这样的函数来查找输入序列的树高。

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。

在我的情况下,更好的解决方案是什么?

0 个答案:

没有答案