控制台输出二叉树


//为了更好地观察二叉树, 这里使用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;
}
原文地址:https://www.cnblogs.com/N3ptuner/p/10707343.html