间接依赖关系解决思路

间接依赖关系
假设模块A依赖于B、C、D,B依赖于E、F、G,E依赖于X、Y、Z,
每个模块都可能有直接依赖和间接依赖,不可能存在环形的依赖关系即A->B->A这种情况
如何求A的所有依赖关系,包括直接依赖和间接依赖。
求一个算法

------解决方案--------------------
采用深度优先的方式进行遍历搜索。

思路:
设置结果集合vector, 遍历A的依赖项B,然后遍历B的依赖项,将取到的依赖放到vector中,遍历结束B;再遍历C/D,直至遍历结束。
------解决方案--------------------
有向图
------解决方案--------------------
就是一颗树的遍历吧?广度优先搜索,深度优先搜索。
------解决方案--------------------
我想也是一种遍历,树的结构可以解决这个问题。
------解决方案--------------------
用有向图来表达这个关系,遍历时单层出来的就是直接依赖,多层出来的就是间接依赖。