二叉树的基础知识

来源:互联网 发布:数据专业问答题 编辑:程序博客网 时间:2024/05/18 21:39
为何要重点研究结点最多只有两个 “叉” 的树? 
        二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树。

二叉树的定义
        定义:是n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成 。 
        逻辑结构:  一对二(1:2)  
        基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点); ② 左子树和右子树次序不能颠倒(有序树)。 
基本形态:


二叉树的存储结构
一、顺序存储结构 按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。
        问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。(使用性质5 )而且有规律:下标值为i的双亲,其左孩子的下标值必为2i,其右孩子的下标值必为2i+1(即性质5)例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必是D,右孩子必为E。

讨论:不是完全二叉树怎么办?
答:一律转为完全二叉树! 方法很简单,将各层空缺处统统补上“虚结点”,其内容为空。

二、链式存储结构
        用二叉链表即可方便表示。一般从根结点开始存储。 (相应地,访问树中结点时也只能从根开始)
        注:如果需要倒查某结点的双亲,可以再增加一个双亲域(直接前趋)指针,将二叉链表变成三叉链表。
二叉树结点数据类型定义: 
typedef struct BiTNode 
{      
        int data;      
        struct BiTNode  *lchild, *rchild; 
} BiTNode, *BiTree;

满二叉树:一棵深度为k 且有2k -1个结点的二叉树。(特点:每层都“充满”了结点)

完全二叉树:深度为k 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k 的满二叉树中编号从1至n的结点一一对应。
完全二叉树的特点就是,只有最后一层叶子不满,且全部集中在左边。这其实是顺序二叉树的含义。在图论概念中的“完全二叉树”是指n1=0的情况。

它们在顺序存储方式下可以复原!










2 0
原创粉丝点击