树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点: 1)树的根结点没有前驱结点,除根结点外的所有结点有且只有一个前驱结点。 2)树中所有结点可以有零个或多个后继结点。
由 n(n>=0)个节点组成,有层次关系的集合。用图形表示像一颗倒挂的树。n=0时为空树
树适合表示具有层次结构的数据,树种的某个结点最多只和上一层的一个结点(即其父结点)有直接关系,因此在n个结点的树中有n-1条边。
Ctypedef int DataType;
struct Node{
struct Node* _First_Child_Ptr; // 第一个子节点指针
struct Node* _Bro_Ptr; // 兄弟节点
DataType _data;
};
若规定根节点为第 1 层,则一颗非空二叉树的第 i 层上最多有 2^(i-1)
个结点。
若规定根节点为第 1 层,则深度为 h 的二叉树的最大总结点数为 2^h-1
。
任何一个二叉树,如果度为0,其叶结点个数为n0,度为2的分支结点个数为n2,则有n0 = n2 + 1
。
若规定根节点为第 1 层,具有 n 个结点的满二叉树的深度 h=log2(n+1)
。
对于具有 n 个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从 0 开始编号,则对于序号为 i 的结点有:
(1)若 i > 0
,i 位置节点的双亲序号:(i-1)/2
;i = 0
,i 为根节点编号,无双亲节点。
(2)若 2i+1 < n
,左孩子序号:2i+1
;2i+1 >= n
否则无左孩子。
(3)若 2i+2 < n
,右孩子序号:2i+2
;2i+2 >= n
否则无右孩子。
每层的结点都达到最大值,则这个二叉树就是满二叉树。反过来说,如果一个二叉树的从层数为 K 且结点总数为 2^k - 1
,则为满二叉树。
满二叉树要求每一层的结点树都达到最大值,完全二叉树仅要求除最后一层外的节点树达到最大值,最后一层可以不满,并且最下⾯⼀层的节点都集中在该层最左边的若⼲位置。可以把满二叉树看成一种特殊的完全二叉树。
⼆叉搜索树是有数值的,⼆叉搜索树是⼀个有序树。
平衡⼆叉搜索树⼜被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:
它是⼀棵空树或它的左右两个⼦树的⾼度差的绝对值不超过1,并且
左右两个⼦树都是⼀棵平衡⼆叉树。
本文作者:beiklive
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!