//为了更好地观察二叉树, 这里使用0来填充空结点
//maxLevel表示树的深度, 即树的最大层次 //下面一段代码执行后 //通过blankBetween[level]得到第level层树的两个结点之间应该打印多少个空格 //通过blankFront[level]得到本层第一个结点前应该打印多少个空格 int *blankBetween; blankBetween = (int *)malloc((maxLevel+1) * sizeof(int)); for (int i = maxLevel; i >= 1; --i) { if (i == maxLevel) blankBetween[i] = 1; else blankBetween[i] = blankBetween[i + 1] * 2 + 1; } int *blankFront; blankFront = (int *)malloc((maxLevel+1) * sizeof(int)); for (int i = maxLevel; i >= 1; --i) { if (i == maxLevel) blankFront[i] = 0; else blankFront[i] = blankFront[i + 1] + blankBetween[i + 1] / 2 + 1; }