二叉树基本概念:
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉
堆。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的结构最简单,规律性最强。可以证明,所有树都能转为唯一对应的二叉树,不失一般性
二叉树基本性质:
性质1: 在二叉树的第i层上至多有2i-1个结点(i>0)
性质2: 深度为k的二叉树至多有2k-1个结点(k>0)
性质3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数(n0)必定为n2+1 (即n0=n2+1)
满二叉树:一棵深度为k 且有2k -1个结点的二叉树。(特点:每层都“充满”了结点)
完全二叉树:深度为k 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k 的满二叉树中编号从1至n的结点一一对应。理解:(k-1层与满二叉树完全相同,第k层结
点尽力靠左)
性质4: 具有n个结点的完全二叉树的深度必为 :log2n取下整+1
性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)
二叉树的存储结构:
一、顺序存储结构
按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。
答:一律转为完全二叉树!
讨论:不是完全二叉树怎么办?
方法很简单,将各层空缺处统统补上“虚结点”,其内容为空
二、链式存储结构