public static TreeNode buildCompleteBinaryTreeFromArray(int[] array) {
		List<TreeNode> nodeArray = new ArrayList<TreeNode>();
		for (int i = 0; i < array.length; i++) {
			nodeArray.add(new TreeNode(array[i]));
		}

		for (int i = 1; i <= array.length / 2; i++) {
			TreeNode curNode = nodeArray.get(i - 1);
			curNode.left = nodeArray.get(2 * i - 1);
			if (2 * i < array.length)
				curNode.right = nodeArray.get(2 * i);
		}

		return nodeArray.get(0);
	}