首先说说什么是度:通俗的讲二叉树中连接节点和节点的线就是度,有n个节点,就有n-1个度,节点数总是比度要多一个,那么度为0的节点一定是叶子节点,因为该节点的下面不再有线;度为1的节点即:该节点只有一个分支;同理度为2的节点就是有两个分支。在二叉树中不可能存在度为3或大于3的节点!
关于度和节点之间的关系还有很多公式:度为0的节点数为度为2的节点数加1,即n0=n2+1
这个公式的推理方法如下:
设:
k:总度数
k+1:总节点数
n0:度为0的节点
n1:度为1的节点
n2:度为二的节点
根据二叉树中度和节点的守衡原理,可列出以下一组方程:
k=n2*2+n1;
k+1=n2+n1+n0;
将上面两式相减得到:n0=n2+1;
例如:已知767个节点的完全二叉树,求其叶子节点个数:
n0=n2+1;
n=n0+n1+n2;
由上面,消掉n2得到:n=2n0+n1-1;
由于完全二叉树度为1的只有0个或1个两种情况,所以,将0或1带入上面公式,整理后得:
n0=(n+1)/2或者n0=n/2;
看看n是否能被2整除,能则用n0=n/2。否则用n0=(n+1)/2
既叶子节点为n0=(n+1)/2=384
再比如一棵二叉树有10个度为1的节点,7个度为2的节点,则二叉树有多少个节点(25)
根据刚才说的,节点数比度数多1,可以列出计算式子:
10 * 1 + 7 * 2 + 1 = 25
我们说的完全⼆叉树如下图,每⼀层都是紧凑靠左排列的:
我们说的满⼆叉树如下图,是⼀种特殊的完全⼆叉树,每层都是是满的,像 ⼀个稳定的三⾓形:
说句题外话,关于这两个定义,中⽂语境和英⽂语境似乎有点区别,我们说 的完全⼆叉树对应英⽂ Complete Binary Tree,没有问题。但是我们说的满 ⼆叉树对应英⽂ Perfect Binary Tree,⽽英⽂中的 Full Binary Tree 是指⼀棵 ⼆叉树的所有节点要么没有孩⼦节点,要么有两个孩⼦节点。如下: