怎麼判斷一棵二叉樹是否是完全二叉樹呢

2021-03-06 10:00:08 字數 2459 閱讀 1955

1樓:匿名使用者

給你講講方法吧,實現就自己寫了。

完全二叉樹(***plete binary tree): 若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的節點都連續集中在最左邊,這就是完全二叉樹。

判斷很簡單,廣度優先搜尋整個二叉樹,一旦找一個不含有子節點或者只含有一個左子節點之後,那麼後續的所有節點都必須是葉子節點。否則,該樹就不是完全二叉樹。

實現的時候要用到佇列。

2樓:匿名使用者

#include

using namespace std;

int a[100],count=0,k=0;

int max(int a,int b)

struct binode

;class bitree

~bitree()

void preorder()

void depth()

private :

binode *root;

binode * creat(binode *bt);

void release(binode *bt);

void preorder(binode *bt);

int depth(binode *bt);

};int bitree::depth(binode *bt)}void bitree::preorder (binode *bt)

}binode * bitree::creat (binode *bt)

return bt;

}void bitree::release (binode *bt)}int cf(int a)

return b-1;

}int main()

if(k==0) cout<<"no"<

else

return 0;}

如何判斷二叉樹是滿二叉樹?

3樓:百度使用者

完全二叉樹的定義:深度為k,有n個結點的二叉樹當且僅當其每一個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時,稱為完全二叉樹。

特點:葉子結點只可能在層次最大的兩層上出現;對任一結點,若其右分支下子孫的最大層次為l,則其左分支下子孫的最大層次必為l 或l+1

滿二叉樹:一棵深度為k,且有2的(k)次方-1個節點的二叉樹

特點:每一層上的結點數都是最大結點數

最簡單的就是: 求出二叉樹的深度。。。和節點的總個數。。。然後滿足公式就行了。。。

層次書和 節點總個數 滿足 1+2+4+8+ 2的層次次方= 節點總個數。。就行了唄。。

4樓:匿名使用者

全二叉樹(***plete binary tree): 若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的節點都連續集中在最左邊,這就是完全二叉樹。

判斷很簡單,廣度優先搜尋整個二叉樹,一旦找一個不含有子節點或者只含有一個左子節點之後,那麼後續的所有節點都必須是葉子節點。否則,該樹就不是完全二叉樹。

5樓:匿名使用者

滿二叉樹的判斷方法:

除最後一層無任何子節點外,每一層上的所有結點都有兩個子結點(最後一層上的無子結點的結點為葉子結點)。也可以這樣理解,除葉子結點外的所有結點均有兩個子結點。節點數達到最大值。

所有葉子結點必須在同一層上。

結點(如果一顆樹深度為h,最大層數為k):

1、它的葉子數是: 2^(h-1);

2、第k層的結點數是: 2^(k-1);

3、總結點數是: 2^k-1 (2的k次方減一);

4、總節點數一定是奇數。

編寫演算法,判斷一顆二叉樹是否是完全二叉樹

6樓:匿名使用者

可以檢驗一棵樹中有0個兒子,1個兒子,2個兒子的節點數a,b,c。

則應滿足b=0,a=c+1

7樓:匿名使用者

||#include

#include

#define max 100

typedef struct node

bitnode,*bitree;

void createbitree(bitree * bt) }bool fullbitree(bitree b)void main()

8樓:樹袋熊劉

假設為完全二叉樹

找到第一個非葉子結點,判斷其是否是隻有左孩子或左右孩子都有。

此後判斷其前面的結點是否都有左右孩子。

9樓:酋長的爺爺

上面那位給出的好像是判斷滿二叉樹的方法……

完全二叉樹和滿二叉樹還是不完全一樣的……

給你一個參考思路:類似於按層遍歷的方式,發現空節點之後看看其後還有沒有樹節點。

設一棵完全二叉樹共有結點,則在該二叉樹中有多少葉子結

根據完全二叉樹的性質,葉結點的個數應該為 結點總數 2 取上整,本題則為700 2 350,取上整還是350,所以有350個葉子節點 有350個節點,演算法是這樣的,你建個excel 二叉樹,第一層是1第二層是2,第三層是4,每一層是上一層數乘內2.1248163264128256512弄成這樣,求...

怎麼將一棵樹轉換成二叉樹,或者是將二叉樹轉換成一棵樹,那個簡

我也不知道,只是為了完任務!德無賴 哥們部落格裡有這個問題的解法很清楚 怎樣將一棵樹轉化為二叉樹,要通俗易懂的,跪求 50 看品種說話,有的品種可以直接把它鋸了,留下一小節,來年發芽就成了。把多餘的枝條去了就成二叉了。要嗎就嫁接也可以等後才要春天雨水 第一個孩子作為父節點的左子樹,其它孩子作為第一個...

若一棵二叉樹有葉子結點,則該二叉樹中度為2的結點個數是

節點個數是10。1 總結點數n n0 n1 n2,總結點數等於葉子結點數 度為內1的結點數 度為2的結點數。另外容,考慮一下二叉樹中的線,度為1的結點出去的線為1,度為2的結點線出去的為2。每個結點除根結點外都有一條線進入,所以n 1 2n2 n1。2 在電腦科學中,二叉樹是每個節點最多有兩個子樹的...