C语言的结构(struct)Android技术知识首页推荐

二叉树

2017-06-10  本文已影响21人  少帅yangjie

1、基本概念

二叉树(Binary Tree)是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

二叉树的特点:

二叉树不存在度大于2的结点。

二叉树的子树有左右之分,次序不能颠倒。

如下图中,树1和树2是同一棵树,但它们是不同的二叉树。

二叉树

1)、斜树

所有的结点都只有左子树的二叉树叫左斜树。所有的结点都只有右子树的二叉树叫右斜树。这两者统称为斜树。

斜树每一层只有一个结点,结点的个数与二叉树的深度相同。其实斜树就是线性表结构。

2)、满二叉树

在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。

满二叉树具有如下特点:

叶子只能出现在最下一层

非叶子结点的度一定是2

同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。

3)、完全二叉树

若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

完全二叉树的特点:

叶子结点只能出现在最下两层

最下层叶子在左部并且连续

同样结点数的二叉树,完全二叉树的深度最小

4)、平衡二叉树

平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

2、二叉树的性质

在二叉树的第i层上至多有2^i-1^个结点(i>=1)。

深度为k的二叉树至多有2^k^-1个结点(k>=1)。

对任何一棵二叉树T,如果其终端结点个数为n~0~,度为2的结点数为n~2~,则n~0~ = n~2~ + 1。

具有n个结点的完全二叉树的深度为「log~2~n」+ 1(「x」表示不大于x的最大整数)。

如果对一棵有n个结点的完全二叉树的结点按层序编号(从第一层到第「log~2~n」+ 1层,每层从左到右),对任一结点i(1≤i≤n)有:

若i=1,则结点i是二叉树的根,无双亲;如i>1,则其双亲是结点「i/2」。

如2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i。

若2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1。

3、二叉树的存储结构和遍历

二叉树是一种特殊的树,它的存储结构相对于前面谈到的一般树的存储结构要简单一些。

①顺序存储结构

②链式存储结构

上一篇 下一篇

猜你喜欢

热点阅读