Count Complete Tree Nodes 统计完全二叉树的节点数

来源:互联网 发布:肥皂水灌肠的浓度算法 编辑:程序博客网 时间:2024/06/02 18:54

Count Complete Tree Nodes

 

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

Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:/*超时    int countNodes(TreeNode* root) {        return solve(root);    }        int solve(TreeNode *root)    {        if(root == NULL)            return 0;        int left=solve(root->left);        int right=solve(root->right);        return left+right+1;    }    */        int countNodes(TreeNode* root) {        if(root==NULL)            return 0;        int numL=0,numR=0;        TreeNode *lt=root;        TreeNode *rt=root;        while(lt!=NULL)        {            numL++;            lt=lt->left;        }        while(rt!=NULL)        {            numR++;            rt=rt->right;        }                if(numL==numR)            return pow(2,numL)-1;        else            return countNodes(root->left)+countNodes(root->right)+1;    }};

0 0
原创粉丝点击