int count_complete_binary_tree_nodes(TreeNode root) {
    if(isNullNode(root))
        return 0;
    int dl = depth(getLeftChildNode(root));
    int dr = depth(getRightChildNode(root));
    return dl==dr?(1<<dl)+count_complete_binary_tree_nodes(getRightChildNode(root)):(1<<dr)+count_complete_binary_tree_nodes(getLeftChildNode(root));
}
int count_complete_binary_tree_nodes(TreeNode root) {
	if(isNullNode(root)) return 0;
	int hleft = height(getLeftChildNode(root));
	int hright = height(getRightChildNode(root));
	return hleft==hright?(1<<hleft)+count_complete_binary_tree_nodes(getRightChildNode(root)):(1<<hright)+count_complete_binary_tree_nodes(getLeftChildNode(root));
}