C语言数据结构:二叉树与内存共享
1. 二叉树基础
二叉树是一种非常有用的数据组织方式,存储在其中的数据可以按有序的方式提取。它由相互连接的元素(节点)组成,起始节点是树的基础,称为根节点。每个节点通常包含一个数据项,以及指向两个子节点(左节点和右节点)的指针。如果某个子节点不存在,对应的指针为 NULL
。节点还可以包含一个计数器,用于记录该数据项的重复次数。
以下是一个用于表示存储 long
类型整数的二叉树节点的 struct
定义:
typedef struct Node Node;
struct Node
{
long item; // 数据项
int count; // 数据项的重复次数
Node *pLeft; // 指向左节点的指针
Node *pRight; // 指向右节点的指针
};
当要添加到二叉树的数据项已经存在时,不会创建新节点,而是将现有节点的 count
成员加1。
2. 二叉树中的数据排序
构建二叉树的方式决定了树中数据项的顺序。向树中添加数据项时,需要将待添加的项与树中现有的项进行比较。通常,添加项的规则是:对于每个节点,左子节点中存储的数据项小于当前节点的数据项,右子节点中存储的数据项大于当前节点的数据项。如果某个子节点不存在,对应的指针为