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.
Solution
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publicclassSolution {publicintcountNodes(TreeNode root) {if (root ==null) {return0; }int left =left(root.left);int right =right(root.right);if (left == right) {return (1<< (left +1)) -1; } else {returncountNodes(root.left)+countNodes(root.right)+1; } }privateintleft(TreeNode node) {int height =0;while (node !=null) { height++; node =node.left; }return height; }privateintright(TreeNode node) {int height =0;while (node !=null) { height++; node =node.right; }return height; }}