Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 高效的树结构层次重建_Sorting_Data Structures_Tree_Hierarchy - Fatal编程技术网

Sorting 高效的树结构层次重建

Sorting 高效的树结构层次重建,sorting,data-structures,tree,hierarchy,Sorting,Data Structures,Tree,Hierarchy,我有一个这样的树结构: 1 ABC 1.1 DEF 1.1.2 GHI 1.2 JKL 1.2.1 MNO 2 PQR 2.1 。。。每层的深度和长度没有限制。现在发生的事情是,我去掉了树结构周围的一些元素,最后我想要有一个适当的、重新构造的层次编号 在这种情况下,您通常如何以最少的工作量重新排序并应用适当的层次编号?这是一个基本的用例,但我正在寻找改进的空间。我想您将数字和文本保持在同一个值变量中 最简单的方法就是: 将其分为两个变量:number和text 每当您交换两个树节点时(即在排序期

我有一个这样的树结构:

1 ABC

1.1 DEF

1.1.2 GHI

1.2 JKL

1.2.1 MNO

2 PQR

2.1

。。。每层的深度和长度没有限制。现在发生的事情是,我去掉了树结构周围的一些元素,最后我想要有一个适当的、重新构造的层次编号


在这种情况下,您通常如何以最少的工作量重新排序并应用适当的层次编号?这是一个基本的用例,但我正在寻找改进的空间。

我想您将数字和文本保持在同一个
变量中

最简单的方法就是:

  • 将其分为两个变量:
    number
    text
  • 每当您交换两个树节点时(即在排序期间),只交换
    文本
    值,并将
    数字
    值保留在它们所在的位置
  • 无论何时添加新元素作为最后一个子元素,只需使用
    previousLastElement.number+1
  • 无论何时打印出元素编号,都会反向附加所有以点分隔的父编号
  • 现在唯一剩下的复杂性是当您插入元素时,您必须在该元素之后“推”其他元素的编号(但仅在该级别上),或者当您删除元素时,您必须拉它们。

    您可以使用