数据结构与C 知识量:8 - 24 - 99
在计算机编程领域,树(Tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n≥1)个有限节点组成一个具有层次关系的集合。之所以把它叫做树,是因为看起来像一棵倒挂的树,根朝上,叶朝下。
在树中,有且仅有一个特定的称为根(Root)的结点;当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2 、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTree)。
树的相关术语包括:
节点(Node):组成树的基本部分,每个节点具有名称或“键值”,节点还可以保存额外的数据项,数据项根据不同的应用而变。
边(Edge):组成树的另一个基本部分,每个节点可以有多条连接到其它节点的出边。
根(Root):树中唯一一个没有入边的节点。
路径(Path):由边依次连接在一起的节点的有序列表。
子节点(Children):入边均来自于同一节点的若干节点,称为这个节点的子节点。
父节点(Parent):一个节点是其所有出边所连接的节点的父节点。
兄弟节点(Sibling):具有同一个父节点的节点之间称为兄弟节点。
子树(Subtree):一个节点和其所有子节点,以及相关边的集合。
叶节点(Leaf):没有子节点的节点称为叶节点。
层级(Level):从根节点开始到达下一个节点的路径,所包含的边的数量,称为这个节点的层级。
在C语言中,树的基本操作包括创建、插入、删除以及各种遍历。以下是这些操作的简单描述:
1. 创建树:
在创建树时,需要指定树的根节点。
可以使用递归方法创建树,即通过调用函数创建新的节点并连接到父节点。
2. 插入节点:
在树中插入节点时,需要判断新节点应该插入的位置,通常根据节点的值进行比较。
如果新节点的值小于父节点的值,则将其插入到父节点的左侧;如果大于父节点的值,则插入到右侧。
3. 删除节点:
如果要删除的节点是叶节点(没有子节点),则直接释放该节点的内存。
如果要删除的节点有一个子节点,则将该节点的子节点替换为要删除的节点,并释放要删除的节点的内存。
如果要删除的节点有两个子节点,则需要找到该节点的后继节点(即右子树中的最小值节点)或前驱节点(即左子树中的最大值节点),用后继节点或前驱节点替换要删除的节点,并释放要删除的节点的内存。
4. 遍历树:
前序遍历:首先访问根节点,然后递归地执行左子树的遍历,最后递归地执行右子树的遍历。
中序遍历:首先递归地执行左子树的遍历,然后访问根节点,最后递归地执行右子树的遍历。
后序遍历:首先递归地执行左子树的遍历,然后递归地执行右子树的遍历,最后访问根节点。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6