设计一个递归算法,要求: 满足要求的任何一棵二叉树都是高度为N的满二叉树从根结点开始的子树。将这棵满二叉树的结点按照从上至下、从左至右的顺序进行编号,根结点的编号为1,求在给定二叉树的结点总数N的情况下,二叉树可能拥有的形状数M和所有可能情况下每个二叉树的所有结点在原来满二叉树中的编号。请看如下说明和。例如当N=3时,输出结果为:
1: 1, 2, 3
2: 1, 2, 4
3: 1, 2, 5
4: 1, 3, 6
5: 1, 3, 7 tree_count is 5 when N is 3 递归函数的原型是:void arrange(int arr[],int idx,int N,int &tree_count);其中arr是存放编号序列的数组,idx是当前需要计算的数组元素的下标,N是结点总数也是数组长度,tree_count记录二叉树的数目。