📅  最后修改于: 2020-10-15 00:59:12             🧑  作者: Mango
#define MAXNODE 500
struct treenode {
int root;
int father;
int son;
int next;
}
struct treenode
{
int root;
struct treenode *father;
struct treenode *son
struct treenode *next;
}
树数据结构可以分为六个不同的类别。
通用树按层次结构顺序存储元素,其中顶级元素始终作为根元素出现在级别0中。除根节点以外的所有节点都以一定数量的级别存在。存在于相同级别上的节点称为同级,而存在于不同级别上的节点则表现出它们之间的父子关系。一个节点可以包含任意数量的子树。每个节点包含3个子树的树称为三叉树。
森林可以定义为不相交的树的集合,可以通过删除根节点和将根节点连接到第一级节点的边获得。
二叉树是一种数据结构,其中每个节点最多可以有2个子节点。最顶层的节点称为根节点。子节点为0的节点称为叶节点。二叉树用于表达式评估等应用程序中。在本教程的后面,我们将详细讨论二叉树。
二进制搜索树是有序的二进制树。左子树中的所有元素均小于根,而右子树中的所有元素均大于或等于根节点元素。二进制搜索树用于计算机科学领域的大多数应用程序中,例如搜索,排序等。
表达式树用于评估简单的算术表达式。表达式树基本上是一个二叉树,其中内部节点由运算符表示,而叶节点由操作数表示。表达式树被广泛用于求解代数表达式,例如(a + b)*(ab)。考虑以下示例。
问:使用以下代数表达式构造一个表达式树。
(a + b)/(a * b-c)+ d
比赛树用于记录两名球员之间每一轮比赛的胜者。锦标赛树也可以称为选择树或获胜者树。外部节点代表正在进行比赛的玩家,而内部节点代表进行比赛的获胜者。在最高级别,锦标赛的获胜者是树的根节点。
例如,如下所示在四个玩家之间进行的国际象棋比赛的树。但是,左子树的获胜者将与右子树的获胜者对战。