如何在给定节点的所有叶子? (树只有id_parent) [英] How to get all leaves of given node? (tree has only id_parent)
问题描述
我有一个的ArrayList<富>
结构的Java
标准树状领域: ID
, id_parent
,值
我想获得的所有叶子的列表( id_element
的)一个给定的节点。
我的示例数据为:
富的ArrayList< E>
elementData中对象[10]
[0]的Foo
ID 1333393146
id_element 1333398441937
id_parent 1333393120
值1.1。
[1]的Foo
ID 1333393120
id_element 0
id_parent 0
值1。
[2]富
ID 1333400050
id_element 0
id_parent 0
值2。
[3]富
ID 1333400480
id_element 0
id_parent 1333400050
值2.1。
[4]富
ID 1333400596
id_element 1335957085269
id_parent 1333400480
值2.1.1。
[5]富
ID 1333401059
id_element 1335957088564
id_parent 1333400480
值2.1.2。
[6]富
ID 1333401973
id_element 1335957090492
id_parent 1333400480
值2.1.3。
[7]富
ID 1333401974
id_element 1335957093220
id_parent 1333400050
值2.2。
[8]富
ID 1333392031
id_element 0
id_parent 0
值3。
[9]的Foo
ID 1333394672
id_element 1335957098326
id_parent 1333392031
值3.1。
我需要做一个函数公开的ArrayList<龙> GetIds(ArrayList的<富>树,龙id_node){}
,其中树
是我的结构, id_node
是一个节点的ID。
我只需要父节点离开没有子节点。
例如:
输入:[以上结构],ID = 1333400050
输出:1335957085269,1335957088564,1335957090492,1335957093220
我不知道为什么我有一个关于这个停电。
公共静态的ArrayList<龙> getIds(ArrayList的<富>树,龙id_node){
ArrayList的<龙>叶=新的ArrayList<龙>();
对于(富富:树){
如果(foo.id_parent == id_node){
ArrayList的<龙> IDS = getIds(树,foo.id);
如果(IDS == NULL){
leaves.add(foo.id);
} 其他 {
leaves.addAll(IDS);
}
}
}
如果(leaves.isEmpty()){
返回null;
}
返回叶;
}
I have an ArrayList<Foo>
structure in Java
with standard tree-like fields: id
, id_parent
, value
I want to get a list of all leaves (id_element
's) of a given node.
My example data is:
Foo ArrayList<E>
elementData Object[10]
[0] Foo
id 1333393146
id_element 1333398441937
id_parent 1333393120
value "1.1."
[1] Foo
id 1333393120
id_element 0
id_parent 0
value "1."
[2] Foo
id 1333400050
id_element 0
id_parent 0
value "2."
[3] Foo
id 1333400480
id_element 0
id_parent 1333400050
value "2.1."
[4] Foo
id 1333400596
id_element 1335957085269
id_parent 1333400480
value "2.1.1."
[5] Foo
id 1333401059
id_element 1335957088564
id_parent 1333400480
value "2.1.2."
[6] Foo
id 1333401973
id_element 1335957090492
id_parent 1333400480
value "2.1.3."
[7] Foo
id 1333401974
id_element 1335957093220
id_parent 1333400050
value "2.2."
[8] Foo
id 1333392031
id_element 0
id_parent 0
value "3."
[9] Foo
id 1333394672
id_element 1335957098326
id_parent 1333392031
value "3.1."
I need to do a function public ArrayList<Long> GetIds(ArrayList<Foo> tree, Long id_node) { }
where tree
is my structure, and id_node
is an id of a node.
I need only parent node leaves not child nodes.
e.g.:
input: [above structure], id = 1333400050
output: 1335957085269, 1335957088564, 1335957090492, 1335957093220
I do not know why I have a blackout about this..
public static ArrayList<Long> getIds(ArrayList<Foo> tree, Long id_node) {
ArrayList<Long> leaves = new ArrayList<Long>();
for (Foo foo : tree) {
if (foo.id_parent == id_node) {
ArrayList<Long> ids = getIds(tree, foo.id);
if (ids == null) {
leaves.add(foo.id);
} else {
leaves.addAll(ids);
}
}
}
if (leaves.isEmpty()) {
return null;
}
return leaves;
}
这篇关于如何在给定节点的所有叶子? (树只有id_parent)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!