查找在树型产品结构中,一物料是否许加入到另外物料结构中? 求解算法!(150分)

  • 主题发起人 WilliamGui
  • 开始时间
W

WilliamGui

Unregistered / Unconfirmed
GUEST, unregistred user!
前提:
1.表结构
父项物料编码 子项物料编码 用量
... ... ...
2.物料以树型结构存储
3.一种物料只充许有一个组成结构,如A由B和C组成,那么A就不能又可以由D和E组成
求解?
现想加入一物料M,判断是否可以加入,父项为M物料时,不充许加入,出现循环链接时不充许加入

我想用MS SQL Server 存储过程来实现,但"不能用递归",请教各位算法?
当然,只要把算法表示清楚就可以了,什么表示方法都可以。

非常感谢!
 
能修改表的结构吗?
父项物料编码 子项物料编码 用量 再加一项(所有延伸的物料)
这样子在输入的时候,只要把对应子项的物料添加到父项去掉重复的就可以了。
不需要什么算法了,明白了吗?
 
关注。我就是用递归做了一棵树,弄得好慢。不过也不是太慢
 
我已想到一种方法,按图论的方法,这个做:
1.建立一个临时表
2.把想加入BOM树中的记录加入BOM临时表中
3.循环删除没有父节点的记录行
4.如到最后还有记录,证明出现循环链接,如没有记录,则没有造成链接循环
注:意思是从树的顶端开始删除

有没有更好的办法?
 
to williamgui:
呵呵,你没有看懂我的方法吗?其实就是把你写在临时表中的数据直接保存到现在的那个表中。
每次增加删除记录的时候修改相应的树的操作。这样虽然增加删除记录的时候慢了一点,
但是查询是否存在循环的时候就不需要做太多的处理了。不对吗?
 
顶部