Полагаю, вы храните и число, и текст в одной переменной value
.
Самая простая вещь , которую вы могли бы сделать, это:
- Разделите это на две переменные:
number
и text
- Всякий раз, когда вы меняете местами два узла дерева (т.е. во время сортировки), меняйте местами только значения
text
и сохраняйте значения number
там, где они есть.
- Всякий раз, когда вы добавляете новый элемент в качестве последнего подэлемента, просто используйте
previousLastElement.number + 1
- Всякий раз, когда вы распечатываете номер элемента, к нему добавляются все родительские номера, разделенные точкой.
Единственная оставшаяся сложность теперь - это когда вы вставляете элементы, когда вам нужно «нажимать» номера других элементов после этого (но только на этом уровне), или когда вы удаляете элементы, когда вам нужно будет потяните их.