2.3 KiB
2.3 KiB
title | localeTitle |
---|---|
Trees | 树 |
树
树数据结构可以递归(本地)定义为节点集合(从根节点开始),其中每个节点是由值组成的数据结构,以及对节点的引用列表(“子节点”) ,没有引用重复的约束,没有指向根。没有节点的树称为空树或空树。
二叉树是由节点组成的非线性数据结构,其中每个节点具有以下3个组件:
数据元素 :在节点中存储任何类型的数据 左指针 : 指向节点左侧的子树 右指针 : 指向节点右侧的子树 顾名思义,数据元素在节点中存储任何类型的数据。 左右指针分别指向节点左侧和右侧的二叉树。
如果树为空,则由空指针表示。
树木中使用的术语:
根 : 树中的顶级节点。
孩子 : 远离Root时直接连接到另一个节点的节点。
家长 : 孩子的相反观念。
兄弟姐妹 : 一组具有相同父节点的节点。
后裔 : 通过从父到子重复进行的节点。
祖先 : 通过从子节点到父节点重复进行的节点。
分支 (内部节点): 具有子节点的树的节点。
Leaf (不常称为外部节点): 没有子节点的节点。
学位 : 节点的子树数。
边缘 : 一个节点与另一个节点之间的连接。
路径 : 连接节点和后代的节点和边的序列。
等级 : 节点的级别由1 +(节点和根之间的连接数)定义。
树的高度 : 树的高度是其根节点的高度。
深度 : 节点的深度是从树的根节点到节点的边数。
森林 : 森林是一组n≥0个不相交的树。
一些流行的树木类型:
- 二叉树
- 二叉搜索树
- AVL树
- 红黑树
- Splay树
- 霍夫曼树
常见用途
- 表示分层数据
- 以易于搜索的方式存储数据
- 表示已排序的数据列表
- 路由算法
树节点的代码
```c_cpp 结节点 { int数据; //数据元素 struct node * left; //指向左侧节点的指针 struct node * right; //指向右边节点的指针 };
```