判斷一顆二叉樹是不是完全二叉樹

2022-05-03 05:54:07 字數 504 閱讀 7045

還有一種特殊的完全二叉樹就是葉子節點都在同一層的,如下圖

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

思路是:用bfs,一層一層的遍歷二叉樹的節點,一但遍歷到空節點,那麼不在往佇列裡加入節點了,遍歷佇列裡的已有元素,若有乙個不是空節點,那麼就不是完全二叉樹,若全是空節點那麼就是完全二叉樹

#include#include#include#includeusing namespace std;

struct node

;struct node*head;

struct node*build()

;int judge()

while(!q.empty())

return 1;

}void first(struct node *p)

int main()

判斷一顆二叉樹是不是完全二叉樹

類似於測序遍歷,用佇列實現 先進後出 1 如果根不為空,那麼根入隊 2 判斷佇列是否為空,不為空,則將隊頭元素出隊並儲存在臨時變數cur裡,3 判斷cur是否為空,若不為空,則將cur的左右子樹都放到佇列裡,如果子樹為空,就往佇列裡插入null。若為空,則直接停止出隊,然後看佇列裡是否還有不是nul...

判斷二叉樹是不是完全二叉樹

完全二叉樹 要麼是滿二叉樹,要麼是在滿二叉樹的基礎上,最後一層的節點是從左到右是依次新增的 採用按層遍歷的方式判斷是不是完全二叉樹 public class iscompletetree public static boolean iscompletetree node head linkedlis...

判斷二叉樹是不是平衡二叉樹

1.問題描述 輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。來自 劍指offer 2.分析 我們可以採用後續遍歷,在遍歷根結點之前就可以得到左右子樹的深度及是不是一顆平衡二叉樹。然後在根據左右子樹的深度差值來判斷這棵樹...