判斷一棵樹是不是徹底二叉樹的思路
1>若是樹爲空,則直接返回錯
2>若是樹不爲空:層序遍歷二叉樹
2.1>若是一個結點左右孩子都不爲空,則pop該節點,將其左右孩子入隊列;
2.1>若是遇到一個結點,左孩子爲空,右孩子不爲空,則該樹必定不是徹底二叉樹;
2.2>若是遇到一個結點,左孩子不爲空,右孩子爲空;或者左右孩子都爲空;則該節點以後的隊列中的結點都爲葉子節點;該樹纔是徹底二叉樹,不然就不是徹底二叉樹;spa
bool check(BiTree T) { if (T == NULL) return false; queue<BiTree> Q; Q.push(T); while (!Q.empty()) { BiTree p = Q.front(); Q.pop(); if (p->left && p->right) { Q.push(p->left); Q.push(p->right); } else if(p->right && p-left == NULL) return false; else { if(p->left && p-right == NULL) Q.push(p->left); while(!Q.empty()) { p = Q.front(); Q.pop(); if(p->left || p->right) return false; } } } return true; }