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
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容