为例来实现:
如图所示我们将一个树节点的左右各编上号码,就可以看出一些规律,山西的左右值为(8,17),那么所有左值大于8,右值小于17的节点都是属于山西的子节点。稷山先的左右值为(14,15),那么他的所有父节点就是左值小于14,右值大于15的节点,怎么样,用这个方法实现的无限级分类性能绝对是顶呱呱的。一次查询就可以查出属于某个节点的数据以及他子节点的数据。这个算是我见过性能最高的无限级分类算法。其他算法跟这个对比基本没有任何优势。
我们先建立一个数据表,结构如下图(LID 为左值,RID 为右值,Tree 为节点深度,Name 和 ID 就不多说了,节点的索引和名称)
这里就不用SQL语句来说明问题了,文字说明应该更简单一些
添加子节点
找到要添加子节点的父节点parent
然后右值大于parent右值的节点右值加2,左值大于parent右值的节点左值加2
最后插入一个node的左值为parent的右值,右值为parent的左值+1,
删除节点的时候逆向就可以了