递归删除一个节点以及该节点下的所有节点示例

 一段递归删除一个部门以及它的所有子部门的一段代码。仅供大家参考和自己以后备用

有的时候删除信息的时候,需要把这条信息下的所有的都删除,这个时候就需要递归删除了。下面是我在做部门管理中的删除部门功能的时候写的一段递归删除一个部门以及它的所有子部门的一段代码。仅供大家参考和自己以后备用。 
 
下面是我的一段代码的展示: 
 代码如下:
/* 
* 修改一条部门信息 
*/ 
function del($bumen_id){ 
$sql="select bumen_id from lxsm_bumen where topbumen_id=".$bumen_id; //查询以topbumen_id为$bumen_id的bumen_id 
$delsql="delete from lxsm_bumen where bumen_id=".$bumen_id; //删除bumen_id为$bumen_id的部门信息 
$xiaji_id=$this->DB->fetch_assoc($sql); 
if($xiaji_id){ 
foreach($xiaji_id as $id){ 
$res=$this->del($id[bumen_id]); 


$result=$this->DB->query($delsql); 
if($result){ 
return true; 

else{ 
return false; 


 
注释:这里的topbumen_id是部门信息中的上级部门的id号,fetch_assoc()函数是自己已经封装好的函数,是把查询得到的所有内容返回成一个数组。 
 
心得体会:这是自己第一次写递归算法,写得还很稚嫩,不管怎样功能是实现了。我感觉写递归方面的代码的时候,自己先画好一个树状结构,认清其结构后,根据自己想要得到的效果,先在脑子里模拟一步一步的执行。比如这里的删除,想要删除一个部门,就得删除自己并且查找以自己为上级部门的子部门有哪些,把子部门一个一个地遍历得到,这时候子部门的操作,就和它的上级部门的删除一样,需要删除自己并且查找它的子部门,这样一来就有个类似重复的操作,子部门的操作和上级部门的操作经历的步骤是一样的,因此在子部门的遍历中让它执行这个本身的函数。这样一来就形成了一个递归算法。 
 

时间: 2024-10-07 09:51:22

递归删除一个节点以及该节点下的所有节点示例的相关文章

C++递归删除一个目录实例_C 语言

本文实例讲述了C++递归删除一个目录的实现方法.分享给大家供大家参考.具体方法如下: CFindFile的使用框架如下: 复制代码 代码如下: void Recurse(LPCTSTR pstr)  {     CFileFind finder;       // build a string with wildcards     CString strWildcard(pstr);     strWildcard += _T("\\*.*");       // start work

Lua中实现递归删除一个文件夹_Lua

在使用 quick-cocos2d-x 做项目热更新的时候,我需要建立临时文件夹以保存下载的更新包.在更新完成后,我需要删除这些临时文件和文件夹. cocos2d-x 和 quick-cocos2d-x 都没有提供删除文件夹功能.我做了如下2个尝试: 1. 使用C++ 在 cocos2d-x 2.x 中的 AssetsManager 包中提供了一个 CreateDirectory 方法.这个方法可以跨平台支持创建文件夹.在实际项目中运行没有问题. 复制代码 代码如下: bool AssetsMa

Lua脚本实现递归删除一个文件夹_Lua

复制代码 代码如下: rmdir in quick-cocos2d-x with lua. 在使用 quick-cocos2d-x 做项目热更新的时候,我需要建立临时文件夹以保存下载的更新包.在更新完成后,我需要删除这些临时文件和文件夹. cocos2d-x 和 quick-cocos2d-x 都没有提供删除文件夹功能.我做了如下2个尝试: 1. 使用C++ 在 cocos2d-x 2.x 中的 AssetsManager 包中提供了一个 CreateDirectory 方法.这个方法可以跨平台

TreeView 递归 去 一个节点下 所有 叶子节点的问题,在线等待高人帮忙,急~!

问题描述 我把没用的代码都去掉,核心代码就是下面的,点击树上的某个控件之后,用递归把其下面的所有叶节点全部取出来,但是出了错,在线等待高人解答错在哪里,或者直接告诉我应该怎么取//点击树上的某个节点protectedvoidtvCate_SelectedNodeChanged(objectsender,EventArgse){//利用递归获取他所有的子节点tn=tvCate.getSelectedNode();TreeNodetn2=newTreeNode();getLeafNode(tn,tn

ztree jqu...-求好心人指点。ztree删除一个节点后怎么刷新这棵树

问题描述 求好心人指点.ztree删除一个节点后怎么刷新这棵树 重新异步加载ztree用reAsyncChildNodes方法没有反应呢. 解决方案 1. 重新异步加载 zTree var treeObj = $.fn.zTree.getZTreeObj("tree"); treeObj.reAsyncChildNodes(null, "refresh"); 2. 重新异步加载当前选中的第一个节点 var treeObj = $.fn.zTree.getZTreeO

javascript删除一个html元素节点的方法_javascript技巧

本文实例讲述了利用原生javascript实现删除一个指定的html元素的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.jb51.net/" /> <title>&l

怎样判断ExtJS 异步tree的某个节点下的所有节点都已经加载了

问题描述 最近在项目中遇到一个Ext 异步树头痛的问题:树中的每个节点都有一个checkbox,当勾选父节点时,也需要将其所有的子节点都选中,但是问题是当前还没有加载这些子节点.知道可以通过对父节点加tree.on(checkedchange,function(node){node.expand(..递归.)});的形式逐个展开所有的子节点,但是怎样才能知道父节点下的所有子节点都被展开选中了呢? 因为要在这之后对该父节点和其所有子节点做一些操作. tree.on('checkedchange',

利用java算法排列组合父节点下的子节点

问题描述 利用java算法排列组合父节点下的子节点 一个item下有多个父节点,一个父节点下面有多个子节点,通过遍历父节点把每个父节点的子节点遍历出来,然后对子节点进行组合,求大神帮我补全代码 List parents = mrItemDimCombMybatisDao.getAllParentByItem(itemId); for (MrItemDim parent : parents) { List sons = mrItemDimCombMybatisDao.getAllSonByPare

根据一个节点查询出它所有的子节点和父节点

问题描述 用户权限问题有这样一个表MenuIDMenuNameParentMenuID1a2b12c14d25e46f5在权限表里只存了MenuID比如说张三对菜单4有操作权限,那么我就得查出和4有关的父节点以及4下边的所有子节点请高手帮忙! 解决方案 解决方案二:sql还是C#sql用CTEC#递归解决方案三:递归几层啊?2是4的父,1是2的父,1取不取?5是4的子,6是5的子,6取不取如果memu表的内容不太多就读出来放到DataTable并常驻内存就行了,通过DataTable的selec