这篇笔记主要介绍了树结构的基本概念、遍历方法以及在JavaScript中的操作,包括查找、遍历、筛选和树结构与列表结构之间的转换。此外,还提及了iOS开发中字典(NSDictionary)的使用以及纯CSS绘制基本图形。
一、树结构介绍
在JavaScript中,树结构通常表现为一个对象数组,每个对象代表一个节点,包含id、title等属性,且可能包含children属性,用于表示其子节点。如果一个节点没有children属性或children为空数组,则认为它是叶子节点。通过这样的数据结构,可以构建任意复杂的树形层次。
二、树结构遍历方法
1. 广度优先遍历(BFS)
广度优先遍历从根节点开始,逐层访问所有节点。首先访问根节点,然后访问所有第一层节点,接着是第二层节点,以此类推。在JavaScript中,可以通过队列数据结构实现BFS。
2. 深度优先遍历(DFS)
深度优先遍历有三种常见策略:前序遍历、中序遍历和后序遍历。它们的区别在于访问节点的顺序。
- 前序遍历:先访问根节点,然后递归遍历左子树,最后遍历右子树。
- 中序遍历:在二叉树中,通常用于排序,先遍历左子树,然后访问根节点,最后遍历右子树。
- 后序遍历:先遍历左右子树,最后访问根节点。
三、树结构操作
1. 查找节点
在树中查找特定ID的节点,可以通过递归实现,遍历所有节点直到找到目标节点。
2. 遍历筛选
遍历树结构并根据条件筛选节点,可以使用DFS或BFS,同时添加判断条件来决定是否保留节点。
3. 树结构与列表结构转换
- 树结构转列表:遍历树,将节点按照某种顺序(如前序遍历)添加到列表中。
- 列表结构转树结构:通常需要知道每个节点的父节点信息,根据这些信息构建父子关系,从而形成树形结构。
四、iOS开发--字典(NSDictionary)
在iOS开发中,NSDictionary是一种不可变的键值对集合,用于存储对象。它不允许重复的键,并且键必须是Objective-C的NSCopying协议的实现者。
五、纯CSS绘制基本图形
利用CSS的border、border-radius、transform等属性可以绘制出矩形、圆形等基本图形。例如,通过设置border-radius为50%可以创建一个圆形。
总结,这篇笔记涵盖了数据结构中的树形结构及其在JavaScript中的应用,同时也涉及了iOS开发的基础知识和CSS图形绘制技巧,对于理解和处理这类问题提供了实用的指导。