题目: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.
题意:给定一颗完全二叉树,数它的结点数并返回
思路:递归解法,先判断一颗二叉树是不是满二叉树,若是则返回其结点数,若不是递归调用其两个子节点
int countNodes(TreeNode* root) {
if(root==NULL)return 0;
TreeNode* l=root->left;
TreeNode* r=root->right;
int h=1;
while(l&&r)
{
h++;
l=l->left;
r=r->right;
}
if(l||r) return countNodes(root->left)+countNodes(root->right)+1;
return pow(2,h)-1;
}