анализ prima facie заставляет меня думать, что время выполнения равно O(logn*logn)
Причина: внешний цикл while выполняется в большинстве случаев (когда c является константой).Это связано с тем, что он опирается на переменную «root», которая, в свою очередь, полагается на родительское дерево «pop parenttree», итеративно заполняется только внуками «исходного» корня.В лучшем случае все дети будут идти по одному пути в дереве.Известно, что длина одного пути вниз по дереву составляет logn
Внутренний цикл while также выполняется не более d раз logn (d является постоянным), , если ... не выполняется в O (1) тогда он будет выполняться в режиме dlogn + X, а общее время выполнения будет O (logn * (logn + X)), что, вероятно, упростится до O(Xlogn)
При условииis is if, оператор if / else выполняется в O (1)
Outer * Inner = O (clogn * dlogn)