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