判斷二叉樹是否為完全二叉樹。完全二叉樹的定義是,前n-1層都是滿的,第n層如有空缺,則是缺在右邊,即第n層的最右邊的節(jié)點,它的左邊是滿的,右邊是空的。
河東網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,河東網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為河東1000+提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的河東做網(wǎng)站的公司定做!這個問題的描述已經(jīng)提示了解法,采用廣度優(yōu)先遍歷,從根節(jié)點開始,入隊列,如果隊列不為空,循環(huán)。遇到第一個沒有左兒子或者右兒子的節(jié)點,設置標志位,如果之后再遇到有左/右兒子的節(jié)點,那么這不是一顆完全二叉樹。
這個方法需要遍歷整棵樹,復雜度為O(N),N為節(jié)點的總數(shù)。
#include#include using namespace std; bool leftMost =false; queue q; bool ProcessChild(Node* node) { if(node) { if(!leftMost) { q.push_back(node); } else return false; } else leftMost=true; return true; } bool IsCompleteBinaryTree(Node* root)//層序遍歷 { if(root==NULL) return true; q.push_back(root); while(!q.empty()) { Node* node=q.pop(); if (!ProcessChild(node->left)) return false; //處理右節(jié)點 if (!ProcessChild(node->right)) return false; } return true; }
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。