【问题标题】:Efficient Tree Structure Hierarchy Rebuild高效的树结构层次结构重建
【发布时间】:2023-03-21 14:26:01
【问题描述】:
我有这样的树结构:
1个ABC
1.1 防御
1.1.2 GHI
1.2 JKL
1.2.1 移动网络运营商
2 PQR
2.1
...每个级别的深度和长度没有限制。现在发生的情况是,我取出了树结构周围的一些元素,最后我想要一个适当的、重组的层次编号。
在这种情况下,您通常如何以最少的工作量重新排序和应用适当的层次编号?这是一个有点基本的用例,但我正在寻找一些改进的空间。
【问题讨论】:
标签:
sorting
data-structures
tree
hierarchy
【解决方案1】:
我想您将数字和文本都保存在同一个 value 变量中。
您可以做的最简单的事情是:
- 将其分成两个变量:
number 和 text
- 每当您交换两个树节点(即在排序期间)时,只需交换
text 值并将 number 值保留在它们所在的位置。
- 无论何时添加新元素作为最后一个子元素,只需使用
previousLastElement.number + 1
- 每当您打印出元素编号时,请反向附加其所有父编号,以点分隔。
现在唯一剩下的复杂性是当你插入元素时,你必须在那个元素之后“推”其他元素的数字(但只在那个级别上),或者当你删除元素时,你必须拉他们。