Если n - это число вершин в дереве, то временная сложность вашего алгоритма в наихудшем случае составляет Θ (2 n ), а не O ( n 2 ).
Этот наихудший случай возникает, когда у каждого неконечного узла дерева есть только один дочерний элемент, связанный список длиннее, чем дерево, и все узлы в дереве и связанного списка имеют одинаковое значение. Когда это происходит, вы в конечном итоге делаете все ваших рекурсивных вызовов - ваши if
-условия всегда выполняются - поэтому каждый раз, когда вы вызываете traverse
на узле, вы вызываете traverse
дважды на его дочернем узле. Таким образом, вы вызываете traverse
один раз для узла root, дважды для его дочернего элемента, четыре раза для своего внука, восемь раз для своего правнука и т. Д. c., Что составляет Θ (2 n ), если есть n узлов.