【发布时间】:2015-02-24 04:10:34
【问题描述】:
我有一棵树,其节点数从 100 到超过 500,000 不等。树中的每个节点都有一个唯一的 id。由于树中有大量节点,解析到树以在其中搜索节点的计算量很大。所以我想实现一个索引数据结构,它有 id 和另一个指向节点的指针,什么是实现这个索引数据结构的最佳方法,我想用数组来做,但它赢了'没有帮助,因为在执行之前节点的数量是未知的。
树中的节点数可能超过 500K 并且动态增加,树中的节点根据唯一 id 不相关,此 id 用于与其他节点区分,主要用于搜索节点在树上。
下面的例子可能会给出关于树的粗略概念(但这不是实际场景,只是用它来解释树)。
假设树描述的是车辆,根节点下的每个节点 对车辆类型进行分类,比如说两轮车、火车、四 轮车、卡车等在此节点下可能还有更多 基于其他标准(如品牌、型号、发动机等)的分类。 并且每个节点都将具有很少的属性(例如在 xml 中)。所以最后我们 如果节点存在,将使用 id 搜索节点是否存在 属性,树上还有多个其他功能, 搜索就是其中之一,它会消耗大量时间。
【问题讨论】:
-
你能定义ID的性质吗?
-
id 为整数,仅用于区分一个节点与另一个节点,添加新节点时递增。
-
IMO 可以使用链式哈希。在链式哈希情况下,您可以选择 KEY 作为 ID 范围的公共键 [Ex- ID 0 到 1000 在一个链式链表中]..
-
btw 节点是动态创建的吗?我的意思是,在将它们添加到所需的数据结构之前,您知道有多少个节点吗?
-
@KcDoD 问题是不同节点的标准不同,我会尝试概括它,但我不确定我是否能很好地解释它,例如,让我们假设树是车辆,父节点下方的每个节点都不能确定车辆类型(如两轮车、四轮车、火车等),并且对于每个节点,可能还有其他节点确定车轮或发动机的类型或其他特性。 这不是实际场景,我只是试图用这个来解释
标签: c data-structures