【数据结构】-树-判断一棵树是否是完全二叉树

思路:层次遍历,空节点也入队,遍历的时候如果遇到空节点时,判断后序节点是否有非空节点,如果有就说明是非完全二叉树。

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);
}

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