现在有这样一个小模块(如图) 有 3 级菜单,每级菜单的选项数量不固定且每级菜单之间有依赖关系。 我想通过一个算法,能让这 3 级菜单的数据进行排列组合,最后用一个列表嵌套字典的形式输出所有组合。 我只知道如果每级菜单之间没依赖的话,用 python 的 itertool 生成笛卡尔积可以轻松解决, 但是有菜单之间有依赖的话,该如何处理呢?求大神支个招。
每级菜单之间到底是啥样的依赖关系啊
有依赖关系就不会是排列组合了吧?
就比如图中的,地图服务菜单下,有 4 个子菜单:全部,数据配置,GIS 配置,平面地图;平面地图下又有 4 个子选项:全部,增,删,改。就是有层级关系,就像树状结构一样。
我不知道你们这个是怎么实现的,我说下我个人对菜单的理解吧,我感觉你这个很像数据结构设计里面的树. 举个栗子: 除了顶级菜单,其他菜单都有自己的父级菜单,你把它看作一个树,叶子节点的个数就是你这个做全部组合方式个数 so: 全部组合方式为,从根节点走到叶子节点的全部全部路径
对,就是这个意思。所以该怎么写这个代码
三层 for 循环?
所以这个问题抽象出来应该就是,遍历多叉树并获取其全部路径
递归就好了呀
DFS
多叉树路径遍历,如果不考虑栈溢出,递归就行。非叶子节点,一直往下递归,直到叶子节点保存路径