数据结构与算法中,树、图和并查集的总结要点有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计6113个文字,预计阅读时间需要25分钟。
1. 二叉树+二叉树是一种常用地存储结构,用来描述元素的逻辑关系。通常情况下,二叉树中的节点定义如下:`typedef struct btree_node { void *item; struct btree_node *left; struct btree_node *right; } btree_node;`
1. 二叉树一般地二叉树多用链式存储结构来描述元素的逻辑关系。通常情况下二叉树中的结点定义如下:
typedef struct btree_node { void *item; struct btree_node *left; struct btree_node *right; } btree_node_t;
在一些不同的实际应用中,还可以增加某些指针域或者线索化标志,例如增加指向父结点的指针、左右线索化的标志。
另外如果你想区分二叉树结点和二叉树这种结构,不妨定义如下的二叉树结构(类似于STL中分离定义数据结构和元素结点的方法):
typedef struct { btree_node_t *root; int n; int (*comp)(const void *,const void *); } btree_t; typedef void (*cb)(btree_node_t *);//定义访问结点的函数指针
其中n表示二叉树结点的个数,comp表示函数指针。使用函数指针comp因为数据类型使用的是通用指针,在进行查找等比较数据大小的操作时需要定义一个比较函数,在泛型数据结构的C实现中应用非常广泛。
1.1 二叉树的遍历二叉树常见的遍历次序有先序、中序、后序三种,其中序表示根结点在何时被访问。
本文共计6113个文字,预计阅读时间需要25分钟。
1. 二叉树+二叉树是一种常用地存储结构,用来描述元素的逻辑关系。通常情况下,二叉树中的节点定义如下:`typedef struct btree_node { void *item; struct btree_node *left; struct btree_node *right; } btree_node;`
1. 二叉树一般地二叉树多用链式存储结构来描述元素的逻辑关系。通常情况下二叉树中的结点定义如下:
typedef struct btree_node { void *item; struct btree_node *left; struct btree_node *right; } btree_node_t;
在一些不同的实际应用中,还可以增加某些指针域或者线索化标志,例如增加指向父结点的指针、左右线索化的标志。
另外如果你想区分二叉树结点和二叉树这种结构,不妨定义如下的二叉树结构(类似于STL中分离定义数据结构和元素结点的方法):
typedef struct { btree_node_t *root; int n; int (*comp)(const void *,const void *); } btree_t; typedef void (*cb)(btree_node_t *);//定义访问结点的函数指针
其中n表示二叉树结点的个数,comp表示函数指针。使用函数指针comp因为数据类型使用的是通用指针,在进行查找等比较数据大小的操作时需要定义一个比较函数,在泛型数据结构的C实现中应用非常广泛。
1.1 二叉树的遍历二叉树常见的遍历次序有先序、中序、后序三种,其中序表示根结点在何时被访问。

