有一颗分层的树
数据库字段
id nodeName parentId
我想查出某个节点下的所有叶子节点的id
该怎么查(有代码实例更好)
问题补充:
第一层节点
第二层节点1
第三层节点1
第三层节点2
第二层节点2
第三层节点3
第三层节点4 比如上面这颗树
如果我传的是第一层节点id
那么会返回
第二层节点1 id
第二层节点2 id
第三层节点1 id
第三层节点2 id
第三层节点3 id
第三层节点4 id
如果我传的是
第二层节点1 id
那么返回的只有
第三层节点1 id
第三层节点2 id注:叶子节点可能有多层!
数据库字段
id nodeName parentId
我想查出某个节点下的所有叶子节点的id
该怎么查(有代码实例更好)
问题补充:
第一层节点
第二层节点1
第三层节点1
第三层节点2
第二层节点2
第三层节点3
第三层节点4 比如上面这颗树
如果我传的是第一层节点id
那么会返回
第二层节点1 id
第二层节点2 id
第三层节点1 id
第三层节点2 id
第三层节点3 id
第三层节点4 id
如果我传的是
第二层节点1 id
那么返回的只有
第三层节点1 id
第三层节点2 id注:叶子节点可能有多层!
我的目的是: 根据当前节点的ID查询出它所有叶子子节点的ID(叶子节点可能为多层,也一起查询出来!),用递归怎么做?
private List<T> getSubNodes(String parentTId) {
// 从DB中取出该父节点下的所有第一层子节点(这个很简单的)
List<T> subNodes = getTByParentMessageId(parentTId);
if (subNodes.size() > 0) {
for (T t : subNodes) {
t.setSubNodes(getSubNodes(t.getTId()));
}
}
return subNodes;
}这样就可以得到root下的全部子节点,是树状的结构,如果要取得的话使用深度或广度遍历都可以的。