最近项目用到了菜单树,想想菜单树等树结构在实际中应用还是挺广的,所以分析总结下。除了菜单树,还有权限树,商品分类列表也是树结构。
实际应用中的树结构
树结构分析
要说树结构中最具美感的应该是二叉树了,但是实际中更多的是n叉树。
我们拿菜单树为例子。
无论是二叉树还是n叉树,每个结点至多有一个父节点,但是可以有0到n个分支。
没有父节点的那个叫做根节点,没有分叉的那个叫做叶子节点。对应到菜单树中那么一级菜单项显然就是根节点,最后一级菜单项就是叶子节点。根据OOP思想,我们需要把结点封装为一个类。既然要体现出父子结构显然这个类就必须有父子节点的id。因为多叉,所以有多个子节点,所以使用List类型字段来描述子节点。这样子,一个菜单项就定义如下