Я предполагаю, что вы говорите о Составной шаблон проектирования . Общая версия этого шаблона не позволяет вам сразу переходить к листьям, поэтому вам придется рекурсивно прогуливать детей. В псевдокоде:
stack = []
stack.push(rootElement)
results = []
while(stack is not empty) {
elt = stack.pop()
if (elt.is_leaf()) {
results.push(elt)
}
else { // not a leaf: add children to the stack
for (c in elt.children()) {
stack.push(c)
}
}
}
В этот момент вы можете получить доступ к 77-му элементу results
, чтобы получить 77-й лист, как измеряется в порядке «дети, которых вы узнали о первом». Имейте в виду, что, в общем, просто сказать «77-й лист» не очень важно, если вы не дадите точный отчет о том, каков ваш критерий упорядочения.