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 2h nodes inclusive at the last level H.
Solution One: recursion, if the left height is equal to the right height, there are 2^h-1 leaf nodes. Otherwise recursive left and right sub-tree to find the number of nodes.
/**
* Definition for a binary tree node.
* Public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode (int x) {val = x;}
* }
*/
public class Solution {
public int countnodes (TreeNode root) {
if (root = = null) {
return 0;
}
int left = 0;
int right = 0;
TreeNode tmp = root;
while (tmp! = null) {
left++;
TMP = Tmp.left;
}
TMP = root;
while (tmp! = null) {
right++;
TMP = Tmp.right;
}
if (left = = right) {
return (int) Math.pow (2, left)-1;
}
Return 1 + countnodes (root.left) + countnodes (root.right);
}
}
222. Count Complete Tree Nodes