Я очень новичок в древовидных структурах данных. Я знаю, как работает вся структура, но не уверен, как подойти к случайной генерации.
Например, чтобы создать бинарное дерево с глубиной 3, вы, по сути, собираете части вместе одну за другой. то есть:
root = Node()
root.leftChild = Node()
root.rightChild = Node()
root.leftChild.leftChild = 'left'
root.rightChild.rightChild = 'right'
Вышеупомянутое не работает, когда я хочу случайным образом создавать структуры двоичного дерева, которые по-разному различаются между собой. Под случайным созданием древовидной структуры я подразумеваю случайное создание типа узла, случайное назначение дочернего элемента или его отсутствие, но конечный результат всегда будет иметь глубину N.
Есть ли у кого-нибудь предложения о том, как подойти к этому? Я хотел бы увидеть какой-нибудь псевдокод/алгоритм или что-то в этом роде.
Спасибо
idxMax
находится в диапазоне от2^(n-1) + 1
до2^n
, и, следовательно, дерево должно иметьidxMax / 2
,idxMax / 4
...idxMax / (2^log(idxMax)
узел. - person pwwpche   schedule 24.01.2015