|
本帖最后由 yiyiyicz 于 2014-12-5 18:21 编辑
代码见70楼,图见68楼
测试见附件
思路描述看前面的回帖。用的是自下而上的方式
最大路径长度为103,路径经过的结点26,24,21,19,3,4,5,7,11。也就是两个叶结点26,11之间的路径,经过根结点1
树形图是随意画的,这个结果不代表最长路径一定要结果根结点1。比如可以把叶节点或者中间结点边的权值加大,就可以看到不需要经过根结点的最长路径。
代码只是找出一条最长路径。修改后,也可以找出所有的最大路径,及其所有路径
代码是用msxml写的。基本上没用XPath语句(用XPath的地方已经标出,这个也可以不用)。代码还可以加速
忘了说明:代码中没有加压缩树形图功能。如果会msxml,这个不难
这样,似乎需要修改代码才能适应没有压缩的树形图。不过这样将大大增加代码执行速度
所以,修改代码时注意要用压缩后的树形图
所谓压缩,就是把没有分叉的结点,统统用边的权值代表
调试时可以变更附件的sheet1中A/B两列的数据,观察结果。切记,修改数据不可违反树形图的规则
sheet1右侧的数据是调试中记录下来的,可以参考
附件
xmltree.rar
(60.95 KB, 下载次数: 58)
|
|