二叉树(Binary Tree,BT)的概念和性质
二叉树是一种比较特殊的树形结构,也比较常见,其特点是每个节点最多只有二棵子树,即二叉树中不存在度大于2的节点。二叉树的子树有左子树、右子树之分,孩子同样也有左孩子、右孩子之分(次序不能颠倒)。
一般地,二叉树有如下5种形态。
一般地,树的很多概念和属于也适用于二叉树,但也有一些不同:
二叉树不存在度大于2的节点但树可以;
二叉树一定是有序的;
二叉树可以为空,树不能为空等。
二叉树有一下两个比较重要的性质:
1、第i层至多有个节点(i
1);
2、深度为k的二叉树至多有个节点(k
1);
当一棵二叉树深度为k且有个节点时,我们称其为满二叉树。
满二叉树 完全二叉树
那么什么是完全二叉树呢?深度为k,有n个节点的二叉树当仅仅当其每一个节点都与深度为k的满二叉树编号从1到n的节点都与深度为k的满二叉树中编号从1 到n的节点一一对应的,称为完全二叉树.可以这么说,满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树.
自己总结了一下完全二叉树的判断方法:
1、假如去掉最深层的叶节点,上面的二叉树为满二叉树;
2、除了根节点之外的所有节点数之和除以2后余数为零.
[感觉自己牛逼死了o( ̄▽ ̄)d(逃~]
完全二叉树有如下几点特征:
1、叶节点只可能出现在最下面两层上;
2、对任一节点,若其右子树深度为n,则其左子树的深度必为n或n+1;
3、对任何一棵二叉树,如果其叶节点数为,度为2的节点数为
,则一点满足
;
4、具有n个节点的完全二叉树的深度为(trunc为取整函数);
5、一棵n个节点的二叉树,对于任一编号为i的节点,有
①如果i=1,则节点i为根,无父节点;如果i>1,则其父节点编号为trunc(i/2);
②如果2*i>n,则节点i为叶节点,否则左孩子编号为2*i;
③如果2*i+1>n,则节点i无右孩子,否则右孩子编号为2*i+1.