如何从未排序的双向链接列表创建树

问题描述 投票:-4回答:1

我正在努力为未排序的LinkList创建一个Tree,其中每个Node包含三个实例变量

  1. ID
  2. 数据
  3. parentId的

和Linked List是数据类型节点,只需要具有子和父关系的基本树,不需要特定类型的树

java data-structures
1个回答
0
投票

让我们以一个例子开始研究这个问题。

以下是提供给我们的清单数据

Pojo{id=4, parent_id=2, name=C} 
Pojo{id=5, parent_id=2, name=D} 
Pojo{id=7, parent_id=3, name=E} 
Pojo{id=6, parent_id=3, name=F} 
Pojo{id=8, parent_id=6, name=FB} 
Pojo{id=1, parent_id=0, name=root} 
Pojo{id=2, parent_id=1, name=A} 
Pojo{id=3, parent_id=1, name=B}

让我们假设在上面的例子中我们已经提供了列表的大小,即7

现在根据作者在评论中提供的信息,我假设这是一个Pojo对象列表,即List<Pojo> pojoObjects;

现在我们将把树(图形)存储在这样的数据结构中 - ArrayList<ArrayList<Pojo>> finalTree = new ArrayList<ArrayList<Pojo>>(7);

现在我们可以迭代我们的列表--pojoObjects然后我们可以检查父ID是什么,并将这个特定的Pojo对象添加到该列表元素。

像这样: -

for(Object pojo: pojoObjects) {
    int parentId = pojo.parent_id;
    ArrayList<Pojo> atThisIndex = finalTree[parentId];
    atThisIndex.add(pojo);
    finalTree[parentId] = atThisIndex;
}

现在在这个循环之后我们的输出看起来像这样: -

0 -> Pojo{id=1, parent_id=0, name=root}
1 -> Pojo{id=2, parent_id=1, name=A} , Pojo{id=3, parent_id=1, name=B}
2 -> Pojo{id=4, parent_id=2, name=c} , Pojo{id=5, parent_id=2, name=D}
3 -> Pojo{id=7, parent_id=3, name=E} , Pojo{id=6, parent_id=3, name=F}
4 -> {}
5 -> {}
6 -> {}
7 -> {}

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.