新手 问个递归的小程序

zoubiantianxia666 2015-06-16 09:16:36
private void delete (Connection conn, int id, boolean isLeaf ) {

//delete all the children
if(!isLeaf) {
Statement stmt = DB.createStatement(conn);
String sql = " select * from article where pid = " + id;
ResultSet rs = DB.getResultSet(stmt,sql);
try{
while (rs.next()) {
delete(conn,rs.getInt("id"), rs.getInt("isLeaf")==0);
}
} catch(SQLException e) {
e.printStackTrace();
} finally{
DB.close(rs);
DB.close(stmt);
}
}

//delete it self
String sql = " delete from article where id = " + id;
DB.executeUpdate(conn,sql);
}

然后调用此函数delete(conn,id,isLeaf)
简单说明一下,这是删除帖子和他的子帖的小程序,我不太明白的是当帖子不是叶子节点时会执行if 后面的语句知道获得他的叶子贴,然后删除。可是我不明白的是我觉得这个小程序只能删除叶子贴,然而不是叶子贴的一概删除不了,因为通过调用会一直执行if后面的帖子直到拿到叶子贴,可其他的非叶子贴拿不到啊。。。 事实上所有帖子都能删除,但我不知道我想的哪里错了,请大家帮忙
...全文
276 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ucangau 2015-06-18
  • 打赏
  • 举报
回复
引用 5 楼 zoubiantianxia666 的回复:
引用 4 楼 ucangau 的回复:
叶子贴删除完了,原来的非叶子贴就变成叶子贴了
对啊,但是如果只调用一次递归函数的话,也就只能删除叶子贴,其他的非叶子贴删除不了,除非无限调用递归函数,才能把所有帖子删除,这是我的理解
先开始每看仔细。 这个函数 传的参数 id 就是叶子节点的父节点的id 所以当然所有贴都可以删除了
yyfhz 2015-06-18
  • 打赏
  • 举报
回复
它的思路就是, delete(integer id) if (当前节点不是叶子节点) { 调用delete删除所有的孩子节点 } 然后删除节点本身 没有问题啊
microhex 2015-06-18
  • 打赏
  • 举报
回复
我不是很明白你的isLeaf是怎么判断的啊??
jiabohao521 2015-06-17
  • 打赏
  • 举报
回复
不一定非要用递归算法呀!你可以在点一个阶段的时候得到他的id,然后再子节点的那个列查询是否有数据,返回int类型,如果返回得值大于零则证明这个节点下有子集,否则就是没有,这样就可以判断是否可以删除了!
scl555 2015-06-17
  • 打赏
  • 举报
回复
你这个应该有自关联吧 ,要先删除子节点再去删除父节点 ,要不然会报错的
zoubiantianxia666 2015-06-17
  • 打赏
  • 举报
回复
引用 2 楼 jiabohao521 的回复:
不一定非要用递归算法呀!你可以在点一个阶段的时候得到他的id,然后再子节点的那个列查询是否有数据,返回int类型,如果返回得值大于零则证明这个节点下有子集,否则就是没有,这样就可以判断是否可以删除了!
我是想读懂这个小程序
zoubiantianxia666 2015-06-17
  • 打赏
  • 举报
回复
引用 4 楼 ucangau 的回复:
叶子贴删除完了,原来的非叶子贴就变成叶子贴了
对啊,但是如果只调用一次递归函数的话,也就只能删除叶子贴,其他的非叶子贴删除不了,除非无限调用递归函数,才能把所有帖子删除,这是我的理解
ucangau 2015-06-17
  • 打赏
  • 举报
回复
叶子贴删除完了,原来的非叶子贴就变成叶子贴了
zoubiantianxia666 2015-06-17
  • 打赏
  • 举报
回复
引用 1 楼 scl555 的回复:
你这个应该有自关联吧 ,要先删除子节点再去删除父节点 ,要不然会报错的
对啊,它这个得思路就是先删掉孩子,再删除自己。我测试过了正确,但是我不明白的是它这个思想,

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧