好大一棵树,新春的祝福(一):n级分类的数据结构

简介: 目录           1、n级分类的数据结构           2、我的树的数据结构和页面展现           3、在权限方面的应用          快过年了,先给大家拜个早年,祝大家新的一年里多多发财,呵呵。

 

目录

          1、n级分类的数据结构

          2、我的树的数据结构和页面展现

          3、在权限方面的应用

 

 

     快过年了,先给大家拜个早年,祝大家新的一年里多多发财,呵呵。现在做什么都要提前,拜年也提前把。

     这个树的结构几年前在csdn里面也发过了一次,现在看看,主体结构居然没有什么变化,用了这么长的时间,自我感觉还是很好用的。而且在这个基础之上把其他的功能也都给联系起来了,比如“通用权限”、配置信息等。对,权限是和这个有很大关系的,不过这种关系并不是大家想的“紧耦合”,具体是什么关系呢,待我慢慢讲来,o(∩_∩)o...。


     由于我喜欢使用数据库,所以呢,这里就以数据库为主来说明。

1、基本的n级分类的结构。

     树,本身就是一个n级分类,所以呢还是先从这个说起。n级分类,一般会想到这样的表结构

【Test_Tree的截图】

 

     本来有三个字段(id,title,parentID)就够用了,但是如果只有这三个字段的话,在使用起来会有一些麻烦,所以呢大家会在这个基础之上加一些辅助字段,严格来说后加的字段大多都属于“冗余”字段,但是有时候“冗余”也是很有必要的。

2、增加一个“编号”

     拿上面的例子来说,可以加一个“编号”,比如“树状结构的演示”叫做“01”,他的第一个子节点“ 基本的n级分类”叫做“0101”,第二个子子节点“加一个‘编号’”叫做“0102”。如下图。

 

     优点:增加的这个“编号”可以实现很多的功能,

     a、[编号的长度 / 2] 表示节点的“深度”(也就是第几级节点),

     b、[编号]去掉最后两位,表示该节点的父节点ID,同时也可以做一个循环,一直找到根节点。

     c、order by 编号 ,可以对整个树进行排序,而这个排序又和数的结构是相一致的。

 

【order by code 的效果】

 

     把这些结合起来可以达到一个效果,那就是可以使用一个SQL语句来得到一个有缩进效果的记录集,可以用这个记录集直接绑定DropDownList控件。这样就避免了递归。

     为了便于调用,我们可以建立一个视图,比如叫做 V_Test_Tree2 ,如下图

 

 

 

SELECT   TOP   100   PERCENT  NoteID, Code,
    
REPLACE ( SPACE ( LEN (Code)  /   2   -   1 ),  '   ' '   '
      
+  NoteTitle  AS  NoteTitle
FROM  dbo.Test_Tree
ORDER   BY  Code

 

     思路:

     先用 SPACE 函数 根据 code 的长度得到相应的空格,由于这个空格是半角的,在下拉列表框的item里面半角空格是不能够被显示出来的,所以呢需要使用replace函数把半角控件替换成全角空格,以达到站位的效果。


绑定后的效果是这样的。

树状结构的演示 基本的n级分类 加一个“编号”  我的树功能演示 新闻管理 员工管理


【下拉列表框的演示】

 

     缺点:
     a、有容量限制,上面的例子,每一级里面只能有99个节点,多了就不好显示了。虽然说一般99个也就够用了,但是如果出现例外了怎么办呢?可以增加位数,变成3位的。但是修改起来并不是很容易。

     b、不能使用“编号”作为主、外键进行多表关联。因为一旦功能结构(或者组织结构)发生了变化,那么就意味着这个“编号”也会随之发生变化,如果使用主键进行关联的话,那可是一件很恐怖的事情。

 

针对这些缺点进行了一下改进,改进结果就是我的树的结构了。

下一篇将详细说明我的树的数据结构和页面的展现。

 

相关文章
|
2月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
28 0
|
6天前
|
存储 算法 Linux
【数据结构】树、二叉树与堆(长期维护)(1)
【数据结构】树、二叉树与堆(长期维护)(1)
|
6天前
|
算法
【数据结构】树、二叉树与堆(长期维护)(2)
【数据结构】树、二叉树与堆(长期维护)(2)
【数据结构】树、二叉树与堆(长期维护)(2)
|
1月前
|
存储
【数据结构】树和二叉树的概念及结构
数据结构——树和二叉树的概念及结构
48 3
【数据结构】树和二叉树的概念及结构
|
6天前
|
C++ 容器
【数据结构】AVL树
【数据结构】AVL树
|
1月前
|
存储 算法 Python
Python数据结构新视角:Trie树与Suffix Tree的相爱相杀,你站哪边?
【7月更文挑战第20天】在编程领域,Trie树(前缀树)与Suffix Tree(后缀树)犹如双星,各有专长。Trie树高效检索字符串集合,擅长前缀匹配,适用于自动补全和拼写检查;Suffix Tree则管理字符串所有后缀,加速子串查询,解最长公共前缀和重复子串难题。两者在不同场景发光发热,Trie树于快速响应的自动完成胜出,Suffix Tree则在基因序列分析和文本模式识别中独领风骚。抉择之间,应用场景与需求成关键,恰如剑客选剑,唯理解本质方能制胜。
18 1
|
1月前
|
存储 数据处理 开发者
告别繁琐查找!Python高级数据结构Trie树与Suffix Tree,让数据处理更轻松!
【7月更文挑战第19天】Python的Trie树优化字符串搜索,利用前缀减少无效操作,提升效率;Suffix Tree则高效处理后缀问题,尤其适用于文本搜索与生物信息学。虽构建复杂,但能加速后缀查询。掌握这两种数据结构,能有效应对大规模数据挑战,简化处理流程,提升开发效率。
40 0
|
2月前
|
存储 算法
【树】数据结构——树和二叉树的概念&笔记
【树】数据结构——树和二叉树的概念&笔记
|
2月前
数据结构 树(第10-14天)
数据结构 树(第10-14天)
|
1月前
|
存储
【数据结构】AVL树——平衡二叉搜索树
【数据结构】AVL树——平衡二叉搜索树