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, was completely filled, and all nodes As far left as possible. It can has between 1 and 2hnodes inclusive at the last level H.
1 /**2 * Definition for a binary tree node.3 * struct TreeNode {4 * int val;5 * TreeNode *left;6 * TreeNode *right;7 * TreeNode (int x): Val (x), left (null), right (null) {}8 * };9 */Ten classSolution { One Public: A intCountnodes (treenode*root) { - if(root==NULL) - return 0; thetreenode* tmp=root->Left ; - intleftheight=1; - intrightheight=1; - while(tmp!=NULL) + { -Tmp=tmp->Left ; +leftheight++; A } atTmp=root->Right ; - while(tmp!=NULL) - { -Tmp=tmp->Right ; -rightheight++; - } in if(leftheight==rightheight) - { to return(1<<leftheight)-1; + } - Else the returnCountnodes (Root->left) +countnodes (root->right) +1; * } $};
Count Complete Tree Nodes