目录
1树的概念及结构
树是一种 非线性 的数据结构,它是由 n ( n>=0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因
为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的
1.1 树的特点
1.2树的相关概念
1.3树的表示
typedef int DataType;
struct Node
{
struct Node* _firstchild1; //第一个孩子结点
struct Node* _pNextBrother; //指向下一个兄弟结点
DataType _data; //结点中的数据域
};
无论树中一个结点有多少个孩子,都可以表示。因为我只指向第一个孩子,剩下的孩子,让孩子之间用兄弟指针串起来
2双亲表示法:
2二叉树
2.1概念
2.3特殊的二叉树
1. 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^k-1(等比数列求和),则它就是满二叉树。
2. 完全二叉树 :完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为 K的,有n 个结点的二叉树,当且仅当其每一个结点都与深度为 K 的满二叉树中编号从 1 至 n 的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。
2.4二叉树的性质
性质1:若规定根结点的层数是1,二叉树第i层上的结点数目最多为 2^{i-1} (i≥1)
性质2:若规定根结点的层数是1,深度为k的二叉树至多有2^{k}-1个结点(k≥1)
性质3:包含n个结点的二叉树的深度至少为log2 (n+1)
性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1
性质5:树的边的个数比节点数少一个,节点个数于节点边的关系: N个节点的树有N-1个边.
边与度的关系:N - 1 = 0N0+1N1 + 2 * N2+3N3+……+KNK