树
树(Tree)是一种层级的(hierarchical)数据结构。由节点(Node)和边(Edge)组成。
术语:
- 根节点(Root Node):最高层级节点。
- 双亲节点(Parent Node):上下层关系中的直接上层节点。
- 孩子节点(Child Node):上下层关系中的直接下层节点。
- 兄弟节点(Sibling Node):同一双亲节点内,节点之间处于同一层关系。
- 祖先节点(Ancestor Node):节点处于它的上层(直接或间接)。
- 子孙节点(Descendant Node):节点处于它的下层(直接或间接)。
- 度(Degree):拥有孩子节点的数量。
- 树的度(Degree of Tree):树内各节点度的最大值。
- 分支节点(Branch Node):度大于0的节点。
- 叶子节点(Leaf Node):度等于0的节点。
- 距离(Distance):两个节点间的最短路径中边的数量。
- 深度(Depth):根节点到它的距离。
- 广度(Breadth):某一层级的节点数量。
- 树的高度(Height of Tree):最大深度 + 1,也就是顾名思义的高度。
- 树的广度(Breadth of Tree):叶子节点的数量。
- 子树(Subtree):树的一部分也是树。
- 森林(Forest):很多棵树,但是互不相交(disjoint)。
树的实现
- 链式实现:使用节点对象表示树中的每个节点,每个节点包含数据和指向孩子节点或双亲节点的引用。
- 顺序实现:使用列表构建树结构,通过下标关系来表示节点之间的连结关系。
树的遍历
- 广度优先遍历(Breadth First Search (BFS)):从根节点出发,沿着树的宽度遍历树的节点,先访问根节点,然后依次按层级访问同一层的节点,再移动到下一层。BFS可以找到从根节点到目标节点的最短路径。
- 深度优先遍历(Depth First Search (DFS)):从根节点出发,尽可能深的搜索树的分支,当一个分支遍历完后再回溯到上一个节点,接着遍历下一个分支。DFS有三种顺序:前序、中序、后序。