有一颗分层的树 
数据库字段 
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注:叶子节点可能有多层!

解决方案 »

  1.   

    我给出的基本思路是1. 先构造这个节点下的所有子节点,这个用关联关系很容易实现,查出的表为A2. 从A表中取parentId为空的Distinct记录
      

  2.   

    不好意思想反了,2. 应该是A表中的ID!=A'表中的parentId 
      

  3.   

    父ID为空它代表的是根节点 ,也就是第一层节点。
    我的目的是:  根据当前节点的ID查询出它所有叶子子节点的ID(叶子节点可能为多层,也一起查询出来!),用递归怎么做?
      

  4.   

    这就是个最普通的递归程序啊
    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下的全部子节点,是树状的结构,如果要取得的话使用深度或广度遍历都可以的。