当前位置: 代码迷 >> J2SE >> 请问一个循环遍历的有关问题
  详细解决方案

请问一个循环遍历的有关问题

热度:58   发布时间:2016-04-24 02:12:06.0
请教一个循环遍历的问题
现在表结构是这样的
条目1----条目2
条目2----条目3
条目2----条目4
条目3----空
条目4----条目5
条目5----空
现在已知条目1,想根据条目1查找出所有相关的条目。遍历的终止是为空的条目。
其中,有的条目对应多个条目,而且条目的深度不确定。
想问问这个循环该怎么写?最好别是递归,不好理解

------解决方案--------------------
看帖子吧:
http://topic.csdn.net/u/20111124/17/76e30f79-26f2-43fb-a16f-c27f08db79d2.html

Java code
    /**     * @param PostCode     *             根据父节点获取所有子节点岗位编号     * @return  树的子结点集合     */    @SuppressWarnings("unchecked")    public List<JobType> getPostCodeChilds(String postCode) {        List<JobType> ret = new ArrayList<JobType>();        List<JobType> retRecursive = null;        List<JobType> children = getChildrenNodes(postCode);        for(JobType job0 : children){            String displayOrder = job0.getDisplyOrder();            if(!CommUtil.isNull(displayOrder) && displayOrder.equals("po")){                ret.add(job0);            }else{                retRecursive = getPostCodeChilds(job0.getJobTypeCode());                if(ret.size() == 0){                    ret = retRecursive;                }else{                    ret.addAll(retRecursive);                }            }        }        return ret;    }
------解决方案--------------------
。。。你这个不知道深度是多少。除了用递归。还能怎么办啊。
------解决方案--------------------
这个结构用递归简单点吧,要不是用算法去写,估计得相当麻烦,
------解决方案--------------------
探讨

。。。你这个不知道深度是多少。除了用递归。还能怎么办啊。

------解决方案--------------------
得有一个根据父条目去判断子条目列表中是否存在为空的递归方法

hasNullAmongChildren(Item fatherItem) {
for(int i=0;i<=fatherItem.getChildrenSize();i++){
if(item[i] == null) {
//got it
} else {
hasNullAmongChildren(item[i]);
}
}
}

这是深搜先序遍历

------解决方案--------------------
要是oracle的话用sql直接就可以。
------解决方案--------------------
你这个是SQL递归问题,给个样例,应该可以解决你的问题
SQL code
select d.* from basis_organization d        start  with d.organizationid='O00001'       connect by prior d.organizationid=d.parentid;
------解决方案--------------------
用队列吧
------解决方案--------------------
用递归,堆栈,列表,队列什么都可以,关键看你需要什么
------解决方案--------------------
oracle 数据库 递归查询sql
select t.* from table t
start with t.id= :p 
connect by ..
------解决方案--------------------
建议多理解递归,动态规划~~

这是最基本的一些算法。
  相关解决方案