222. 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.
 * 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;
    //     return 1 + countNodes(root.left) + countNodes(root.right);
    // }
    int height(TreeNode root){
        return root == null ? -1 : 1 + height(root.left);
    }
    public int countNodes(TreeNode root) {
        int h = height(root);
        return h < 0 ? 0 : (height(root.right) == h - 1 ? (1 << h) + countNodes(root.right) : (1 << (h-1)) + countNodes(root.left));
    }

}

 

posted @ 2016-12-05 09:36  微微程序媛  阅读(90)  评论(0编辑  收藏  举报