1. 前言
最近在写一些东西,需要存储一些系统的菜单到数据库。 id 标识当前菜单,pid 标识父级菜单,这样将一个系统的菜单目录存储到数据。获取到某一个系统的所有菜单,得到的数据可以简化成 Parent-Child 的一个数组,而返回给调用方,是需要做一个树形化的结构。
2. 模型
[
上述一个数组中,0 是一个没有任何意义的菜单,一个虚拟的根级菜单,1 表示菜单 1,它的父级菜单是 0,那么 1 就是一个一级菜单。[2 1] 表示菜单 2 的父级菜单是菜单 1,那么 2 就是 二级菜单。其表示的树形结构如下;
3. 实现
因为知道 0 是根节点,找到 0 节点,再找出其所有子节点,然后递归改节点。如上图,如果该树形结构是一个单叉树的话,数组 length 过大的话,递归会爆栈的&