【數據結構】-樹-判斷一棵樹是否是完全二叉樹

思路:層次遍歷,空節點也入隊,遍歷的時候如果遇到空節點時,判斷後序節點是否有非空節點,如果有就說明是非完全二叉樹。

void Judg_WangquanTree(BiTree T) {
	queue<BiTNode*> Q;
	BiTNode* p = T;
	if (T == NULL)return;
	Q.push(T);
	int tag = 0;
	while (!Q.empty())
	{
		p = Q.front();
		Q.pop();
		if (p==NULL&&tag==0) tag++;//出現第一個空節點,修改標記
		if (p&& tag == 1) {//出現空節點之後出現非空節點,則不是完全二叉樹
			cout << "非完全二叉樹" << endl;
			return;
		}
		if(p){
			Q.push(p->lchild);
			Q.push(p->rchild);
		}
	}
	cout << "完全二叉樹" << endl;
}

void seven_4_3(BiTree T) {
	cout << "是否是完全二叉樹:";
	Judg_WangquanTree(T);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章