3. 树的性质

  • 性质一:树中的结点数等于所有结点的度数之和加1.

数据结构(知识点碎片十六)_叶节点

数据结构(知识点碎片十六)_存储结构_02

数据结构(知识点碎片十六)_兄弟结点_03

数据结构(知识点碎片十六)_二叉树_04

  • 性质二:

数据结构(知识点碎片十六)_存储结构_05

  • 性质三:

数据结构(知识点碎片十六)_存储结构_06

  • 性质四:

数据结构(知识点碎片十六)_二叉树_07

数据结构(知识点碎片十六)_兄弟结点_08

数据结构(知识点碎片十六)_树_09


4. 树的基本运算

  • 先根遍历
  1. 访问根结点;
  2. 按照从左到右的顺序先根遍历根结点的每一棵子树。
  • 后根遍历
  1. 按照从左到右的顺序后根遍历根结点的每一棵子树;
  2. 访问根结点。
  • 层次遍历
  1. 从根结点开始按从上到下、从左到右的次序访问树中的每一个结点。

5. 树的存储结构

  • 双亲存储结构(PTree)

顺序存储;求某个结点的双亲结点十分容易,但在求某个结点的孩子结点时需要遍历整个存储结构

数据结构(知识点碎片十六)_二叉树_10

int tree[maxSize]; 
tree[0] = -1; 
tree[1] = 0; 
tree[2] = 0; 
tree[3] = 0; 
tree[4] = 1; 
tree[5] = 1;
  • 孩子链存储结构(TSonNode)

查找某结点的孩子结点十分方便,但查找某结点的双亲结点比较费时,此外,当树的度较大时存在较多的空指针域。

数据结构(知识点碎片十六)_叶节点_11

typedef struct Branch		
{
int cIdx;		
Branch* next;	
}Branch;	

typedef struct
{
int data;
Branch* first;	
}TNode;
  • 孩子兄弟链存储结构(TSBNode)

实际上是把该树转换为二叉树的存储结构。

(二)、二叉树

1. 二叉树的定义

二叉树(binary tree)是一个有限的结点集合,这个集合或者为空,或者由一个根结点和两棵互不相交的称为左子树(left subtree)和右子树(right subtree)的二叉树组成。
二叉树的结构简单、存储效率高,其运算算法也相对简单,而且任何m次树都可以转化为二叉树结构,因此二叉树具有很重要的地位。
二叉树和度为2的树(2次树)是不同的,对于非空树,其差别表现在以下两点:·

  1. 度为2的树中至少有一个结点的度为2,而二叉树没有这种要求;
  2. 度为2的树不区分左、右子树,而二叉树是严格区分左、右子树的。

数据结构(知识点碎片十六)_树_12