【发布时间】:2013-02-20 02:30:20
【问题描述】:
如果我试图构建一个给定输入的树,每行一条边,其中一条边由它连接的两个顶点表示。是否可以使用 Node 结构/类来构造树,还是应该像使用图形一样将其表示为邻接列表?
我遇到的主要问题是输入的顺序。如果给我两个或多个起初根本没有连接的边,那么我有一堆没有连接的 Node 对象,而通常给你一棵树并插入树中只是使新节点成为子节点(或父节点?)另一个节点。
【问题讨论】:
-
对于您提出的问题:您似乎可以从边缘检测节点,不是吗?我的意思是,如果边标识两个顶点,那么边不就是顶点吗?
-
不理解这个“如果我得到两个或多个起初根本没有连接的边”。边缘应该连接吗?无论如何,如果您提前知道顶点的数量,您应该使用邻接列表。它既简单又节省内存。
-
对于你没有问的问题:你需要检测你是否已经识别了节点。我不是绘图专家,但您需要考虑如何维护地图。如果只是一堆相互链接的节点,你能不能维护第二个结构,比如桶树,这样你就可以快速识别是否已经记录了一个节点?
-
@atk:我可以从边缘知道顶点,但我不知道如何在中间步骤中存储顶点。
-
@Duc:我的意思是,如果树的一个部分的边缘在树的不同部分的边缘之后给出。它们将是两条边和四个顶点。我将如何存储这个?我通常只有一个根节点。稍后我将希望以常用方式(中序/预序等)遍历树,这需要访问某些根节点,因此我想以与通常方式类似的方式存储它,但如何连接未连接的节点?