Похоже, вы пытаетесь осуществить поиск в ширину, но с необычным порядком возврата результатов, когда вы берете по одному элементу от каждого потомка подряд и чередуете их.
Так что вам нужно будетПродолжайте построчно: создайте список узлов на этом уровне, а затем, чтобы получить следующий уровень, возьмите всех левых потомков каждого и затем всех правых потомков каждого из них, чтобы сформировать следующий уровень.Это распутает ваше любопытное дерево, и вы посетите узлы в следующем порядке:
Position #1
LEFTS = { P#1 }, RIGHTS = { P#2 }
LEFTS = { P#3 P#4}, RIGHTS = { P#5 P#6 }
LEFTS = { P#7 P#8 P#9 P#10 }, RIGHTS = { P#11 P#12 P#13 P#14 }