求二叉樹的葉子節(jié)點 設(shè)某棵二叉樹的高度為10,則該二叉樹上葉子結(jié)點最多有多少(請詳細解答)謝謝?
設(shè)某棵二叉樹的高度為10,則該二叉樹上葉子結(jié)點最多有多少(請詳細解答)謝謝?如果根節(jié)點的高度為1,那么在高度為10的二叉樹中,全二叉樹的葉子最多,葉子數(shù)為2^(10-1)=2^9=512參考算法如下:
設(shè)某棵二叉樹的高度為10,則該二叉樹上葉子結(jié)點最多有多少(請詳細解答)謝謝?
如果根節(jié)點的高度為1,那么在高度為10的二叉樹中,全二叉樹的葉子最多,葉子數(shù)為2^(10-1)=2^9=512
參考算法如下:計算二叉樹中的葉子節(jié)點數(shù)。由于葉節(jié)點是二叉樹中左、右子節(jié)點不存在的節(jié)點,可以在二叉樹遍歷過程中對這些特殊節(jié)點進行計數(shù),完成葉節(jié)點數(shù)的統(tǒng)計。這個統(tǒng)計可以在任何遍歷模式下給出。下面的算法是用中間順序遍歷實現(xiàn)的:/****function:計算葉節(jié)點數(shù)輸入:二叉樹的根節(jié)點輸出:葉節(jié)點數(shù)**/intcountleaf(BiTree*P){staticintcount=0//注意這里是一個靜態(tài)變量,或者如果(P!=null){count=countleaf(P->lchild)如果((P->lchild==null)&(P->rchild==null))count=count 1 count=countleaf(P->rchild)}return}
I calculate 5
假設(shè)N0是階數(shù)為0的節(jié)點總數(shù)(即葉節(jié)點數(shù)),N1是階數(shù)為1的節(jié)點總數(shù),N2是階數(shù)為2的節(jié)點總數(shù)。從二叉樹的性質(zhì)可以看出,N0=N2+1,然后n=N0+N1+N2(其中n是完全二叉樹的節(jié)點總數(shù))N1-1,因為完全二叉樹中1的節(jié)點數(shù)只有兩個可能的0或1,所以可以得到N0=(n+1)/2或N0=n/2,并將它們組合成一個公式:N0=(n+1)/2.根據(jù)一棵完整的二叉樹中的節(jié)點總數(shù)計算出葉節(jié)點數(shù)