需求是这样的,我们需要实现根据量级来自动生成迷宫,并且从出口到入口需要有且只有一条通路。基于各数据结构的考虑,因为树的特性很好地符合了我们对生成迷宫的要求,树的任意两个节点之间是可达的,而且路径唯一。最终选择了树形数据结构。
如下图,选取A、B两个结点,能找到唯一可达路径:
迷宫的方格表示一个树的结点:
为保证迷宫的随机性,随机选取一个格子作为根结点起点:
并且随机向外(四个方向)延伸路径(若两点可达,则将“墙”打通),经过数次回溯迭代则可遍历所有结点,这样就保证了迷宫的所有格子都是可达的,而不会单纯随机生成“死路一条”的尴尬:
最后把标记出入口: