我正在编写一个使用递归结构配置的库。
为了讨论方便,我称这些图形结构为“树”,因为有一个定义好的“根”节点,每个节点可以引用多个“子节点”。当正确配置时,不应存在循环。它与树有些不同,因为子节点可以在多个位置使用。
为了讨论方便,我称这些图形结构为“树”,因为有一个定义好的“根”节点,每个节点可以引用多个“子节点”。当正确配置时,不应存在循环。它与树有些不同,因为子节点可以在多个位置使用。
A A
/ \ / \
B C B C
/ \ / \ / \ \
D E F D E |
\ |
F
尽管E和F在多个层面上使用了多次,但这两种方式都是可以接受的。节点可以有多个父节点和多个子节点,但绝不能成为它们自己的祖先。
然而,
A
|
B
|
A
|
...
由于循环存在,因此不可接受。
如果我的库被赋予了一个带有循环的图形,那么会对库造成不良影响,因此我正在寻找一种方法来检查输入的正确性。我需要确定是否通过这个结构递归将终止或者是否会陷入无限循环。实际上,我需要在有向图中寻找循环。