当你第一次学习编码时,大部分人都是将数组作为主要数据结构来学习。
之后,你将会学习到哈希表。如果你是计算机专业的,你肯定需要选修一门数据结构的课程。上课时,你又会学习到链表,队列和栈等数据结构。这些都被统称为线性的数据结构,因为它们在逻辑上都有起点和终点。
当你开始学习树和图的数据结构时,你会觉得它是如此的混乱。因为它的存储方式不是线性的,它们都有自己特定的方式存储数据。
定义
树是众所周知的非线性数据结构。它们不以线性方式存储数据。他们按层次组织数据。
树的术语定义
树( tree
)是被称为结点( node
)的实体的集合。结点通过边( edge
)连接。每个结点都包含值或数据( value/date
),并且每结节点可能有也可能没有子结点。
树的首结点叫根结点(即 root
结点)。如果这个根结点和其他结点所连接,那么根结点是父结点( parent node
,与根结点连接的是子结点( child node
)。
所有的结点都通过边( edge
)连接。它是树中很重要得一个概念,因为它负责管理节点之间的关系。
叶子结点( leaves
)是树末端,它们没有子结点。像真正的大树一样,我们可以看到树上有根、枝干和树叶。
树的高度( height
)和深度( depth
)
术语汇总
根结点是树最顶层结点
边是两个结点之间的连接
子结点是具有父结点的结点
父结点是与子结点有连接的结点
叶子结点是树中没有子结点的结点(树得末端)
高度是树到叶子结点(树得末端)的长度
深度是结点到根结点的长度