我一整天都在研究这个问题,我正在重写我们的一个旧产品,而且我很难确定如何在流程图中找到特定的节点.这个问题让我想起了大学,但对于我的生活,我无法想出一个算法来解决这个问题.
我附上3个屏幕截图来帮助解释这一点,但基本问题是,给出是/否?决策节点,找到终止分支的最近的子节点.
我在C#.NET和JSON工作.在JSON中,我有一个对象,它为每个节点提供唯一的标识符,并且还标识从一个节点到下一个节点的每个"链接".我希望编写一个函数(或几个)来确定给定C#中的分支节点的第一个"结束节点".目前我已经在C#中将jSON构建为XML.
鼓励任何和所有想法,不是真正寻找代码而是寻找方法/算法.


附件是图中jSON的输出:
{ "class": "go.GraphLinksModel",
"linkFromPortIdProperty": "fromPort",
"linkToPortIdProperty": "toPort",
"nodeDataArray": [
{"key":-1, "category":"Start", "loc":"169 288", "text":"Start"},
{"key":-2, "category":"End", "loc":"855 394", "text":"End"},
{"category":"Branch", "text":"Yes or No", "key":-4, "loc":"284.8837209302326 285.7848837209302"},
{"category":"DelayNode", "text":"Delay", "key":-3, "loc":"365.8837209302326 215.52345997177622"},
{"category":"Branch", "text":"Yes or No", "key":-5, "loc":"478.8837209302326 214.52345997177622"},
{"category":"DelayNode", "text":"Delay", "key":-6, "loc":"568.8837209302326 151.52345997177622"},
{"category":"DelayNode", "text":"Delay", "key":-7, "loc":"573.8837209302326 268.5234599717762"},
{"category":"DelayNode", "text":"Delay", "key":-8, "loc":"653.8837209302326 215.52345997177622"},
{"category":"Branch", "text":"Yes or No", "key":-9, "loc":"392.8837209302326 392.5234599717762"},
{"category":"DelayNode", "text":"Delay", "key":-10, "loc":"454.8837209302326 317.5234599717762"},
{"category":"DelayNode", "text":"Delay", "key":-11, "loc":"550.8837209302326 473.5234599717762"},
{"category":"DelayNode", "text":"Delay", "key":-12, "loc":"549.8837209302326 317.5234599717762"}, …Run Code Online (Sandbox Code Playgroud)