二叉树

1、二叉树的性质
二叉树的第i层上的结点数最多为2^(i-1)
深度为k的二叉树至多有2^k -1 个结点
在任意二叉树中,叶子数为n0,度为2的结点数为n2 ,则n0=n2+1
2、满二叉树是一颗深度为k的且有2^k-1个结点的二叉树
完全二叉树是至多在最下两层结点的度数可以小于2,并且最下层的结点集中在该层最左的位置的二叉树
3、二叉树的存储结构
顺序存储结构,把一颗有n个结点的完全二叉树,从树根起自上而下,从左到右对所有结点编号,然后依次存储在一个向量中b[0n]中,b[1n]存放结点,b[0]存放结点总数
各个结点的关系
i=1是根结点,i>1则双亲结点是i/2取整
左孩子是2i 右孩子是2i+1 同时要小于n
i>(n/2取整)的结点是叶子
奇数没有右兄弟,左兄弟是i-1
偶数没有左兄弟,右兄弟是i+1
4、二叉链表由根指针唯一确定。在n个结点的二叉链表中有2n个指针域,其中n+1个为空
5、二叉树的遍历方式:前序遍历,中序遍历,后序遍历。时间复杂为O(n)
6、线索二叉树
利用二叉链表中的n+1个空指针域存放指向某种遍历次序下的前趋和后继结点的指针,这种指针成线索。加线索的二叉链表成线索链表,相应二叉树称为线索二叉树。
线索链表结点结构:lchild|ltag|data|rtag|rchild;ltag=0,lchild是指向左孩子的指针;ltag=1,lchild是指向前趋的线索;rtag=0,rchild是指向右孩子的指针;rtag=1,rchild是指向后继的线索;
查找*p在指定次序下的前趋和后继结点。算法的时间复杂度为O(h)。线索对查找前序前趋和后序后继帮助不大。遍历线索二叉树。时间复杂度为O(n)。
7、树、森林和二叉树的转换
树与二叉树的转换
所有兄弟间连线保留与长子的连线,去除其他连线。该二叉树的根结点的右子树必为空。
森林与二叉树的转换
将所有数转换成二叉树。将所有树根连线。
二叉树与树、森林的转换。是以上的逆过程。
8、哈夫曼编码
对于字符集编码时,要求字符集中任意字符的编码都不是其他字符的编码前缀,这种编码称为前缀码。字符出现频率与码长乘积之和又称为文件总长;字符出现呢概率与码长乘积之和称平均码长;使文件总长或平均码长最小的前缀码称为最优前缀码,左为0,右为1.编码平均码长最小;没有叶子是其他叶子的祖先,不可能出现重复的前缀。

你可能感兴趣的:(二叉树)