我正在浏览此算法https://codereview.stackexchange.com/questions/63921/print-all-nodes-from-root-to-leaves
在其中一条评论中提到,打印从根到叶子本身的路径的平均时间复杂度为O(nlogn)。我不太确定他是怎么想出来的。任何澄清将不胜感激。
答案 0 :(得分:0)
我认为这就是他们的意思:
在最好的情况下,树是完全平衡的,它包含N个节点,其中log(N)+1是级别数。树有N / 2片叶子。 每次我们移动到较低级别时,我们都会复制当前累积的路径。如果假设将长度为k的数组复制为O(k)操作,那么当我们从第二级移动到最后一级到叶时,我们执行O(log(N))操作。由于有N / 2个叶子,并且每个我们进行O(log(N))操作,你得到O(N * log(N))。
该函数可以递归地传递相同的数组和当前的级别数,而不是复制数组,确保路径只打印到叶子的级别。