`

删除根的同时把叶子也删除掉

 
阅读更多
--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID int)
RETURNS @t_Level TABLE(ID int,Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.parid=b.ID AND b.Level=@Level-1
END
RETURN
END
GO

create table tb(ID int , NAME varchar(10) , PARID int)
insert into tb values(1, 'A' , 0 )
insert into tb values(2, 'B' , 0 )
insert into tb values(3, 'C' , 0 )
insert into tb values(4, 'A_1_1' , 1 )
insert into tb values(5, 'A_1_2' , 1 )
insert into tb values(6, 'A_2_1' , 4 )
insert into tb values(7, 'A_2_2' , 4 )
go

declare @id as int
set @id = 1

--查询
SELECT a.* FROM tb a,f_Cid(@id) b WHERE a.ID=b.ID
/*
ID NAME PARID
----------- ---------- -----------
1 A 0
4 A_1_1 1
5 A_1_2 1
6 A_2_1 4
7 A_2_2 4
(所影响的行数为 5 行)
*/

--删除
delete from tb where id in (SELECT a.id FROM tb a,f_Cid(@id) b WHERE a.ID = b.ID)
--查询删除后的结果
select * from tb
/*
ID NAME PARID
----------- ---------- -----------
2 B 0
3 C 0
(所影响的行数为 2 行)
*/

drop table tb
drop function dbo.f_cid
分享到:
评论

相关推荐

    叶子分享站PHP源码下载

    叶子网盘分享站PHP网站源码,创建无限级文件夹,上传文件,可进行删除,下载等能很好的兼容服务器。方便管理者操作,查看更多的下载资源以及文章,新增分享功能,异步上传文件/资源等 PHP网盘源码优势,可在根目录中...

    使用Python实现B树

    B树是一种自平衡的搜索树,用于在有序数据集上进行高效的插入、删除和查找...删除操作:在B树中删除一个关键字时,首先从根节点开始搜索目标关键字所在的叶子节点。然后,删除关键字并根据需要进行节点合并操作。 查

    C#,红黑树(Red-Black Tree)的构造,插入、删除及修复、查找的算法与源代码

    C#,红黑树(Red-Black Tree)的构造,插入、删除及修复、查找的算法与源代码 1 红黑树(Red-Black Tree) 如果二叉搜索树满足以下红黑属性,则它是红黑树: 每个节点不是红色就是黑色。 根是黑色的。 每片叶子(无...

    2019年3月计算机等级考试二级C语言笔试.doc

    一、 选择题 (1)下列关于栈叙述正确的是  A)栈顶元素最先能被删除 B)栈顶元素最后才能被删除 ...(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)  A)3 B)4 C)6 D)7

    二叉查找树的插入,删除,查找

    二叉查找树的删除,分三种情况进行处理:1.p为叶子节点,直接删除该节点,再修改其父节点的指针(注意分是根节点和不是根节点),如图a。 2.p为单支节点(即只有左子树或右子树)。让p的子树与p的父亲节点相连,删除...

    基于JavaScript数据结构实现的二叉排序树社会关系网【100012932】

    数据结构课程设计 二叉排序树/社会关系网 输入一组关键值,建立相应的二叉排序树,完成结点的查找和删除操作。要求:可以实现删除根节点、叶子节点以及其他任意节点的功能;可以随时显示操作的结果;

    二叉树排序树建立及平衡处理

    其中删除算法中最难想到的一点是:在用叶子结点代替要删除的非叶子结点后,应该递归的运用删除算法去删除叶子结点!这就是整个算法的核心,其中很强烈得体会到的递归的强大,递归的最高境界(我暂时能看到的境界)!...

    并查集模板代码(含有详细注释)

    并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树...与删除类似,通过以副本作为父亲,保证要移动的元素都是叶子。 这是并查集的模板代码,里面详细解读了并查集,并附带了注释

    全国计算机二级JAVA笔试分类模拟题算法和数据结构、程序设计基础.docx

    全国计算机二级JAVA笔试分类模拟题算法和数据结构、程序... A.4 B.10 C.6 D.16 答案:D 从题干中我们知道,在该二叉树中有5个叶子节点,由二叉树的性质之一:任何一棵二叉树,度为0的节点(也就是叶子节点)总是比度为

    基于JavaScript实现(二叉排序树)社会关系网【100010241】

    详情介绍:...输入一组关键值,建立相应的二叉排序树,完成结点的查找和删除操作。 要求: (1) 可以实现删除根节点、叶子节点以及其他任意节点的功能; (2) 可以随时显示操作的结果。

    二叉树基本算法

    9、求叶子节点数" 10、求节点总数 11、求二叉树中度为1的节点总数 12、求二叉树中度为2的节点总数 13、求二叉树的高度 14、按值查找节点并输出其孩子 15、交换二叉树的左右子树 16、二叉树的删除(递归实现) 0、退出...

    第五章 树与二叉树

    设二叉树具有n个带权值的叶子节点,从根节点到叶子节点的路径长度与相应的叶子节点权值的乘积之和叫做二叉树的带权路径长度,记为: WPL=EWkLk 哈夫曼树 给定一组具有确定权值的叶子结点,可以构造出不同的二叉树,...

    Linux实验报告.zip 带数据结构代码

    一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算 4图 图的结构很简单,就是由顶点V集和边E集构成,因此图可以表示成G=(V,E) 5链表 单向链表是一种线性表,实际上是由节点(N

    数据结构 哈弗曼编码与解码

    给定字符集的哈夫曼树生成后,依次以叶子为出发点,向上回溯至根为止。上溯时走左分支则生成代码 0 ,走右分支则生成代码 1 。重复上述过程直到编码所有的叶子结点。 Huffman译码算法 译码是编码的逆运算。译码过程...

    数据结构树的操作实验报告

    要求采用二叉链表作为存储结构,完成二叉树的建立,前序、中序和后序遍历的操作,求所有叶子及结点总数的操作等。 具体要求如下: ①给出基于二叉链表的二叉树类的定义; ②给出二叉树初始化(构造函数)的实现; ③...

    Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数

    根节点的值不大于(小于)其子节点的值,并且子节点也服从这种特性。根节点值不大于子节点的堆称为小根堆,根节点的值不小于子节点的堆称为大根堆。如图左为小根堆,图右为大根堆。 Python中 heapq 模块 Python 中...

    二叉树基本操作的编程实现源码

    cout删除叶子结点或仅仅根 "; cout移动当前工作指针 "; cout查找结点并修改结点信息 "; cout用广义表和缩格法同时显示二叉树 "; cout三种递归根式遍历 "; cout三种非递归根式遍历 "; cout层次遍历 "; cout...

    数据结构课程设计 哈弗曼压缩+纸牌游戏

    然后重新从头开始读源文件,每次读入一字节,从哈夫曼树相应叶子结点移到树的根结点,在找的过程中,把其哈夫曼编码存入一个栈,把栈中所有元素(0或1)写到缓冲区,如果缓冲区比特数到8了,则将缓冲区的8个比特(一...

    赫夫曼树数据结构

    假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森林中选出两个根结点的...

    源代码行统计工具2.0(VC)

    2. 程序支持文件夹递归遍历,可以将所有叶子节点的路径提取出来统计,因此统计代码行的时候只需要指定项目文件根目录即可,不再需要将待统计的代码拷贝到指定目录下; 3. 程序采用分层的设计方案,模型层和视图层...

Global site tag (gtag.js) - Google Analytics