/*
*完全二叉樹的判定:對二叉樹進行層次遍歷,在遍歷過程中對每乙個結點進行檢查:
* (1)如果當前結點沒有右子樹,則剩下的全部結點必須既沒有左子樹,又沒有右子樹;
* (2)如果當前結點有右子樹,則它必須也有左子樹.
*/#include#includetypedef struct bitnode
*bitree;
typedef struct qnode
qnode,*queueptr;
typedef struct linkqueue
*plinkqueue;
plinkqueue createemptyqueue_link(void)
else
printf("\tout of space!\n");
return p_queue;
}bool isemptyqueue_link(plinkqueue p_queue)
void enqueue_link(plinkqueue p_queue,bitree bt)
else
else
}}void dequeue_link(plinkqueue p_queue)
else }
bitree top_link(plinkqueue p_queue)
return p_queue->f->info;
}bitree createbitree(bitree bt)//先序建立二叉樹
else
bt->info=ch;//生成根結點
bt->lchild=createbitree(bt->lchild);//構造左右子樹
bt->rchild=createbitree(bt->rchild);
} return bt;
}int levelorder(bitree bt)
while(!isemptyqueue_link(p_queue))
if(null!=bt->rchild)
else
bcomfine=true;
} return flag;
}int main()
完全二叉樹的判定
2 實現 二叉樹定義 typedef struct btnode btnode typedef struct bt bt 佇列定義 typedef struct queue queue 函式定義 void premaketree bt bt btnode creatbtree btnode r 以深...
王道5 3 7完全二叉樹的判定
給定乙個二叉樹,確定它是否是乙個完全二叉樹。若設二叉樹的深度為 h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。注 第 h 層可能包含 1 2h 個節點。示例 1 輸入 1,2,3,4,5,6 輸出 true 解釋 最後一層...
二叉樹,完全二叉樹,滿二叉樹
二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...