1、设一颗完全二叉树共有699个节点,则这颗树种叶子节点共有多少个?
首先记n为二叉树节点总数,n0 , n1 , n2位二叉树中度为0 , 1 , 2的节点数。
则有:n = n0 + n1 + n2;
又因为二叉树的规律:n0 = n2 + 1
同时,很显然,完全二叉树中n1要么是0,要么是1,而且二叉树中节点数一定为整数。
可得:n = n0 + 1 + n0 - 1 或者 n = n0 + 0 + n0 - 1 即 n0 = n/2 或者 n0 = (n + 1)/2
从而n0 = 700/2 = 350
关于二叉树的规律 n0 = n2 + 1的论证:
同样记 n = n0 + n1 + n2; (1)
由很显然的关系,二叉树中节点数目等于树枝数目加1,而叶子节点不生成树枝,一度节点生成一个树枝,二度节点生成二个树枝。
从而有:n2 * 2 + n1 = n -1; ==> n = n2 * 2 + n1 + 1; (2)
由(1) 、 (2) 两式可得 n0 = n2 + 1;
2、现有一软件,有A、B两个程序员共同完成,A、B的代码贡献比为6 : 4, A、B的bug率为0.1% 和0.15% , 现在这个软件出现一个bug,请问由A造成的概率为?
首先这个软件出现bug的概率为:P(A) = P(B1) * P(A|B1) + P(B2) * P(A|B2) = 6/10 * 0.10% + 4/10 * 0.15%
而现在要求的问题是P(B1 | A) = P(AB1) / P(A) = P(A|B1) * P(B1) / P(A) = (6/10 * 0.10) / (6/10 * 0.10 + 4/10 * 0.15) = 0.06 / 0.12 = 0.5