现在表结构是这样的
条目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 ..
------解决方案--------------------
建议多理解递归,动态规划~~
这是最基本的一些算法。