1、完全二叉树(Complete Binary Tree)的定义:
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
2、满二叉树的定义(full binary tree):
国内定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。
也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。
国外定义:满二叉树的结点要么是叶子结点,度为0,要么是度为2的结点,不存在度为1的结点。
注:不知道什么原因导致这个差异,百度百科建议在国际交流场合,包括学术会议发表论文等都应该使用美国和国际定义.在国内的各种考试场合,比如研究生考试/软考/计算机等级考试等,都应该使用国内教材的定义.在校学生的校级考根据所在学校采用教材情况而定。
3、二叉树的基本性质
节点的度:节点的子节点的数量为该节点的度。在完全二叉树中,节点的度最多为2,最少为0。
叶子节点:度为0的节点称为叶子节点。
假设完全二叉树的总结点树为n,度为0的节点数量为n0,度为1的节点数量为n1,度为2的节点数量为n2,则显然满足n=n0+n1+n2。
性质1:二叉树第i层上的结点数目最多为2^(i-1),(i≥1)。
性质2:深度为k的二叉树至多有(2^k)-1个结点(k≥1)。 n=2^0+2^1+…+2^(k-1)=(2^k)-1故命题正确。
性质3 在任意-棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则no=n2+1。
证明:因为二叉树中所有结点的度数均不大于2, 假设二叉树的总结点树为n,度为0的节点数量为n0,度为1的节点数量为n1,度为2的节点数量为n2, 则结点数之和: n=no+n1+n2 (式子1) 另一方面,1度结点有一个孩子孩,2度结点有两个子,故二叉树中孩子结点总数是: nl+2*n2+ 树中只有根结点不是任何结点的孩子,故二叉树中的结点总数又可表示为: n=n1+2*n2+1 (式子2) 由式子1和式子2得到: no=n2+1
3、完全二叉树的性质
性质1: 当n为偶数时,n1=1,n为奇数时,n1=0。
证明:
我们知道完全二叉树的特点,它缺少结点时总是出现在叶子层(即最下面一层)的右子树开始连续缺少;
我们设完全二叉树的深度为k(k>1),则从第1层至第k-1层的结点总数为(2^k)-1个(根据二叉树性质2计算出来)且一定是奇数,则第k层的节点数为n-(2^k)-1;
倘若n是偶数,则由偶数-奇数=奇数性质可知第k层节点数为奇数,则存在1个度为1的节点;
倘若n是奇数,则由奇数-奇数=偶数性质可知第k层节点数为偶数,则不存在度为1的节点。
性质2:具有n个节点的完全二叉树的深度为k=[log2(n)](向上取整)。
性质3:对一颗具有n个节点的完全二叉树中的节点从1开始按层序编号,则对于任意的编号为i(1<= i <=n的节点:
(1) 如果i=1,则节点i是根节点,无双亲。
(2) 如果i>1,则节点i的双亲节点为[i/2](向下取整)
(3) 如果2i<=n,则i的左孩为2i,如果2i>n,则i无左孩
(4) 如果2i+1<=n,则i的右孩为2i+1,否则i无右孩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。