【数据结构】按照二叉树的每行个数打印数组

4
    int num = hp.size;
    int front = 0;
    int back = 1;
    int row = 1;
    while (num)
    {
        for (int j = front; j < back; j++)
        {
            cout << hp.arr[j] << " ";
        }
        cout << endl;
        num -= row;//输出完本行还剩的元素个数
        //如果减去本行输出的个数小于0
        if (num <= 0)
        {
            break;
        }
        row *= 2;//下一行要输出的元素个数
        front = back;//定位下一行的起点
        if (num - row <= 0)//如果当前的元素个数不够输出下一行的,直接定位下一行的back位置
        {
            back = hp.size;
        }
        else// 够则——手动定位结尾位置
        {
            back += row;
        }
    }

在这里插入图片描述