树
原文链接:https://note.noxussj.top/?source=sifo
什么是树?
在生活中,大家对树必定不生疏,小朋友都晓得树不就是一类动物嘛,不论在任何中央都有各种各样的树。然而在计算机科学外面树是什么呢?一种分层数据的形象模型,在咱们前端工作中无处不在。在 JavaScript 中没有树这种数据结构,然而能够通过 Object 和 Array 这两个数据结构构建树。
深度与广度优先遍历
深度优先遍历
尽可能深的搜寻树的分支,次要通过递归实现。
口诀:
function dfs(root) { console.log(root.value) root.children.forEach(dfs) }
广度优先遍历
先拜访离根节点最近的节点,次要通过队列实现。
口诀:
- 新建一个队列,把根节点入队
- 把队头出队并拜访
- 把队头的 children 元素别离入队
- 反复 2 和 3 步骤,直到队列为空
function bfs(root) { const q = [root] while (q.length) { const n = q.shift() console.log(n) n.children.forEach((child) => { q.push(child) }) } }
罕用操作
- 深度优先遍历
- 广度优先遍历
利用场景
- DOM 树
- 级联抉择
- 树形控件
- 组织架构图
原文链接:https://note.noxussj.top/?source=sifo