2010-12-09 2 views
0

У меня древовидную структуру, как это:Эффективная структура дерева Иерархия Rebuild

1 АВС

1.1 DEF

1.1.2 GHI

1.2 JKL

1.2. 1 MNO

2 PQR

2.1

... без ограничений по глубине и длине каждого уровня. Теперь случается так, что я вынимаю некоторые элементы вокруг древовидной структуры, и в конце концов я хочу иметь нумеруемую иерархию нумерации.

Как вы обычно пересобираете &, применяете нумерацию нумерации в наименьшей сумме работы в таком случае? Это несколько базовый вариант использования, но я ищу некоторые возможности для улучшения.

ответ

0

Я полагаю, что вы сохраняете как номер, так и текст в той же переменной value.

Самое простое вы могли бы сделать, это:

  1. Раздельное, что в двух переменных: number и text
  2. Всякий раз, когда вы обмениваетесь два дерева узлов (то есть во время сортировки) поменять местами только text значения и сохраняйте значения number, где они есть.
  3. Всякий раз, когда вы добавляете новый элемент в качестве последнего элемента, просто используйте previousLastElement.number + 1
  4. Всякий раз, когда вы печатаете номер элемента, обратимо добавляйте все его номера родителей, разделенные точкой.

Единственная оставшаяся сложность заключается в том, когда вы вставляете элементы, где вам придется «нажимать» номера других элементов после этого (но только на этом уровне) или когда вы удаляете элементы, когда вы придется их вытащить.