Count Complete Tree Nodes解題報告

Description:

Given a complete binary tree, count the number of nodes.

Link:

https://leetcode.com/problems/count-complete-tree-nodes/description/

解題方法:

  1. 給定當前的節點,分別去算這個節點最左邊的level和最右邊的level。
  2. 如果這兩個level相等,那么這個節點可以看作為一個滿二叉樹的根節點,因為我們求出了這個滿二叉樹的level,自然可以算出這個滿二叉樹的節點總數。
  3. 如果這兩個level不相等,那么我們把這個節點看做一個單獨的節點,并且對這個節點的左右子節點重復過程1到2或者1到3。

Time Complexity:

O(logN)

完整代碼:

int countNodes(TreeNode* root) 
    {
        if(!root)
            return 0;
        int ll = 0, rl = 0;
        TreeNode* l = root; TreeNode* r = root;
        while(l) {ll++; l = l->left;}
        while(r) {rl++; r = r->right;}
        if(ll == rl) return pow(2, ll) - 1; //if this is a full binary tree
        return 1 + countNodes(root->left) + countNodes(root->right);  //or treat this node as single node
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容