一、二叉树的基本概念
二叉树:
二叉树是每个节点最多有两个子树的树结构。
根节点:
一棵树最上面的节点称为根节点。
父节点、子节点:
如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子 节点。
叶子节点:
没有任何子节点的节点称为叶子节点。
兄弟节点:
具有相同父节点的节点互称为兄弟节点。
节点度:
节点拥有的子树数。上图中,13的度为2,46的度为1,28的度为0。
树的度:
所有结点的度数的最大值。二叉树的度小于等于2。
树的深度:
从根节点开始(其深度为0)自顶向下逐层累加的。上图中,13的深度是1,30的深度是2,28的深度是3。
树的高度:
从叶子节点开始(其高度为0)自底向上逐层累加的。54的高度是2,根节点23的高度是3。
对于树中相同深度的每个节点来说,它们的高度不一定相同,这取决于每个节点下面的叶子节点的深度。上图中,13和54的深度都是1,但是13的高度是1,54的高度是2。
二、二叉树各种计算公式
1.n个节点的二叉树一共有((2n)!)/(n! * (n+1)!)
种
2.n层二叉树的第n层最多为2^(n-1)
个
3.二叉树节点计算公式 N = n0+n1+n2
,度为0的叶子节点比度为2的节点数多一个。N=1*n1+2*n2+1
4.对任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+1
5.具有n个节点的完全二叉树的深度为log2(n) + 1
6. B-树,除叶子与根节点以外的任意结点的分支数介于[m/2,m](取上整)
7. 具有n 个结点的完全二叉树的深度为[log2n]+1
8. 树的高度:从根节点到所有叶节点中最大的边的数目。树的深度:从根节点到所有叶节点中最多的节点数目。
例题:
1、已知完全二叉树第6层上有10个叶子结点,则这棵二叉树的结点总数最多是 107。
解析:由题意得:这棵二叉树最多有7层
在第6层满的情况下,有26-1=32,其中非叶子节点有32-10=22,而非叶子节点最多有两个孩子从而第七层上共有22*2=44个节点。又前6层的节点数为:26-1=63 所以这棵二叉树的节点数最多为63+44=107个
2、已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树中有()个叶结点
公式: 树中的结点数=总分叉数+1
这里的分叉数就是所有结点的度之和
树中的结点数p = 2+3+4+x (x为叶子结点数)
树中的结点数p = (2*1+3*2+4*3+x*0 )+1 = 2+6+12+1 = 21
x+9 = 21
x = 12
三、二叉树的类型
类型 | 定义 | 图示 |
满二叉树
Full Binary Tree
|
除最后一层无任何子节点外,每一层上的所有节点都有两个子节点,最后一层都是叶子节点。满足下列性质:
1)一颗树深度为h,最大层数为k,深度与最大层数相同,k=h;
2)叶子节点数(最后一层)为2k−1;
3)第 i 层的节点数是:2i−1;
4)总节点数是:2k−1,且总节点数一定是奇数。
| |
完全二叉树
Complete Binary Tree
|
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。满足下列性质:
1)只允许最后一层有空缺结点且空缺在右边,即叶子节点只能在层次最大的两层上出现;
2)对任一节点,如果其右子树的深度为j,则其左子树的深度必为j或j+1。 即度为1的点只有1个或0个;
3)除最后一层,第 i 层的节点数是:2i−1;
4)有n个节点的完全二叉树,其深度为:log2n+1或为log2n+1;
5)满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
| |
平衡二叉树
Balanced Binary Tree
| 又被称为AVL树,它是一颗空树或左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都是一棵平衡二叉树。 | |
二叉搜索树
Binary Search Tree
|
又称二叉查找树、二叉排序树(Binary Sort Tree)。它是一颗空树或是满足下列性质的二叉树:
1)若左子树不空,则左子树上所有节点的值均小于或等于它的根节点的值;
2)若右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值;
3)左、右子树也分别为二叉排序树。
| |
红黑树
Red Black Tree
|
是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质:
1)节点是红色或黑色;
2)根节点是黑色;
3)所有叶子节点都是黑色;
4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
5)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
|