发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
存储一棵树要考虑节点插入、删除、聚合和将一棵树加载到内存。
插入:将节点加入到树上;
删除:将节点从树上摘除;
聚合:将某个节点的所有子节点(不递归子节点)查找放在一起;
加载树:相当于从根节点聚合。
方法一
这种方式如果办公家具 -> 文具盒 -> 铅笔,如果从办公家具查找铅笔,那么将需要递归
以节点为主键,其父节点为某一列值。create table tree(node, value, parentNode);
插入:insert into tree(node, value, parentNode);
删除:删除要做聚合操作后,才能delete from tree where node = xxx;(因为要删除这个节点下所有的子节点)
聚合:如果要聚合某个节点A的所有子节点,必须先查找出所有父节点为A的子节点
方法二
以节点为主键,其路径列表为某一列值。(存在字段长度问题和不符合范式)
方法三
在路径列表的设计中,关键字段的本质是存储了两种信息,一是所有上级分类的id,而是从顶级分类到每个复分类的距离;所以另增加一张表,含有三个字段(一个是所有上级分类的id,二是本分类的id,三是从顶级分类到每个父分类的距离).这样这张表就能起到与path字段相同的作用,而且还不违反数据库范式,最关键的是它不存在字段长度的限制。这种方案也叫ClosureTable。
来自: hdzgx > 《电脑》
0条评论
发表
请遵守用户 评论公约
js树
easyui tree 节点选中
设置选中tree的节点。var node = $(''''''''#tt'''''''').tree(''''''''find''''...
jsTree获取选中节点和选中指定节点
jsTree获取选中节点和选中指定节点。$(''''''''#demo_tree'''''''').jstree({ "core" : { ''''''...
zTree获取所有节点
zTree获取所有节点。一般情况下,通过zTree官方API的方法获取得到的是一个包含所有子节点的根节点(子节点都处于 children 属性下)var treeObj = $.fn.zTree.getZTreeObj(“tree");var nodes = t...
JSF中Tree2组件使用方法-过儿oO -JavaEye技术社区
Tree2组件使用HTML表格将你的数据呈现为一个树。树的每个节点都包含了不少的HTML代码(假定每个节点200个字符,这个大小将取决于你希望在节点上显示的信息的量),这些信息将被传送到浏览器,其中包括...
Ext 动态加载树
Ext 动态加载树var leftTree=new Ext.tree.TreePanel({id:"lefttree",title:"左侧树",loader:new Ext.tree.TreeLoader({dataUrl:""}),root:new Ext.tree.AsyncTreeNode...
ExtJS 4 树 – ExtJS4中文教程 | Show Framework
这个Tree Panel直接渲染在document.body上,我们定义了一个默认展开的根节点,根节点有三个子节点,前两个子节点是叶子节点,这意味着他...
让JTree所有节点展开和关闭的类 - 我爱看火影的日志 - 网易博客
让JTree所有节点展开和关闭的类 - 我爱看火影的日志 - 网易博客。import javax.swing.tree.public static void expandTree(JTree tree,boolean bo) { TreeNode root = (TreeNode) tree.getModel().get...
LeetCode刷题实战572:另一棵树的子树
class Solution {public: bool isSubtree(TreeNode* root, TreeNode* subRoot) { if(root==NULL||subRoot==NULL) ...
微信扫码,在手机上查看选中内容