数据结构整理篇。

概念:

树(tree)是包含n(n>0)个节点的有穷集合,其中:

(1)每个元素称为节点(node);

(2)有一个特定的节点被称为根节点或树根(root)。

(3)除根节点之外的其余数据元素被分为m(m≥0)个互不相交的结合T1,T2,……Tm-1,

其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树(subtree)。

树具有以下特点:

(1)每个节点有零个或多个子节点。

(2)每个子节点只有一个父节点。

(3)没有父节点的节点称为根节点。

树的表示法:

1.双亲表示法:每个节点存储:数据、parent在数组中的下标;

2.孩子表示法:全部节点组成一个数组,每个数组指向一个单链表,存放其孩子;

3.双亲孩子表示法

4.孩子兄弟表示法

二叉树的定义:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。

二叉树的性质:

  1) 在非空二叉树中,第i层的结点总数不超过2i-1, i>=1;

  2) 深度为h的二叉树最多有2h-1个结点(h>=1),最少有h个结点;

  3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;

  4) 具有n个结点的完全二叉树的深度为log2(n+1);

  5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
    若I为结点编号则 如果I>1,则其父结点的编号为I/2;
    如果2I<=N,则其左儿子(即左子树的根结点)的编号为2I;若2I>N,则无左儿子;
    如果2I+1<=N,则其右儿子的结点编号为2I+1;若2I+1>N,则无右儿子。

  6)给定N个节点,能构成h(N)种不同的二叉树,其中h(N)为卡特兰数的第N项,h(n)=C(2*n, n)/(n+1)。

  7)设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总和J=I+2i。

——相关资料推荐
赞无