Complete Binary Tree

Complete Binary Tree.png

解題思路 :

從 root 開始把所有節(jié)點(diǎn)用 BFS 方式放入 vector ( 節(jié)點(diǎn)只要不是 nullptr 就放入左跟右 child 如果 child 是 nullptr 也照樣放入 ) 存完整個(gè) tree 之後 接著從 vector 後面檢查 只要是 nullptr 就忽略 直到找到第一個(gè)非 nullptr 的值 以此 index 為起點(diǎn)往前找 如果還能找到任何一個(gè) nullptr 則 return false 代表不是 complete binary tree ( CBT 的特性 nullptr 一定只能在尾端 )

C++ code :

<pre><code>
/**

  • Definition of TreeNode:
  • class TreeNode {
  • public:
  • int val;
    
  • TreeNode *left, *right;
    
  • TreeNode(int val) {
    
  •     this->val = val;
    
  •     this->left = this->right = NULL;
    
  • }
    
  • }
    */

class Solution {

public:
/**
* @param root, the root of binary tree.
* @return true if it is a complete binary tree, or false.
/
bool isComplete(TreeNode
root) {
// Write your code here
vector<TreeNode*> Q;
Q.push_back(root);
for(int i = 0; i < Q.size(); i++)
{
TreeNode *tmp = Q[i];
if(tmp)
{
Q.push_back(tmp->left);
Q.push_back(tmp->right);
}
}

    int index = 0;
    for(int i = Q.size() - 1; i >= 0; i--)
    {
        if(Q[i]){
            index = i;
            break;
        }
    }
    
    for(int i = index - 1; i >= 0; i--)
    {
        if(!Q[i]) return false;
    }
    return true;
}

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原題 檢查一棵二叉樹是不是完全二叉樹。完全二叉樹是指一棵樹除了最后一層,其它層上節(jié)點(diǎn)都有左右孩子,最后一層上,所有...
    Jason_Yuan閱讀 498評論 0 0
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系?...
    Zero___閱讀 3,324評論 3 49
  • 隨筆1-24(2015.6-10) 1、作者 才華不是財(cái)富,痛苦不是財(cái)富,用才華對痛苦進(jìn)行思考和表達(dá)才是。於是有了...
    四葉閱讀 1,661評論 3 14
  • 1.哇塞!回到媽媽的家里,我感覺無比的踏實(shí)和幸福! 2.哇塞!每天清晨吃到媽媽做的熱騰騰的飯,好幸福好感恩! 3....
    歡寶貝45閱讀 172評論 0 0
  • 我以前是個(gè)夜貓子,越晚精神越好。兩個(gè)因素促成我慢慢改變這個(gè)壞習(xí)慣。 一,我發(fā)現(xiàn)白天工作時(shí)的精神狀態(tài)不佳,有時(shí)候會打...
    沉魚日記閱讀 545評論 0 0

友情鏈接更多精彩內(nèi)容