一、判断题
1、消除递归不一定需要使用栈。
2、设顺序表的表长为n,则在表中插入或删除一个元素需要平均移动n个元素。
3、稀疏矩阵采用压缩存储后会失去随机存取功能。
4、栈和队列都不适合用散列存储法存储。
5、设当前搜索的子表为(alow,alow+1,…,ahigh),则利用二分搜索选取的划分点的下标为m=(low+high)/2。
6、哈夫曼是带权路径长度最短的树,则路径上权值较大的结点离根一定较近。
7、在9阶B-树中,除失败结点以外的任意结点的分支数均介于5和9之间。
8、具有10个叶结点的哈夫曼树最小高度为5。
9、深度优先遍历算法可判定一个有向图是否存在回路。
10、用有向无环图描述表达式(A+B.*((A+B./A.,至少需要顶点的数目为5。______
11、完全二叉树中若一个结点没有左孩子,则其必为叶结点。
12、任何无向图都存在生成树。
13、在二叉平衡树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转。
14、在任意 ……此处隐藏19960个字…… [j]); // 打印该子集的元素
}
}
printf("}\n");
return;
}
mark[i] = 0; // 不选第i个元素
f(a, mark, n, i + 1);
mark[i] = 1; // 选第i个元素
f(a, mark, n, i + 1);
}
[解析] 对于集合S,它的幂集可以看作由空集和所有子集构成。因此,我们可以采用递归的思想,从空集开始构建幂集。具体来说,从集合元素的第一个元素开始,每个元素可以被选择或不选择,如果选择,则将该元素加入当前子集中,递归到下一个元素,否则递归到下一个元素,直到最后一个元素,将当前子集加入幂集。在递归到下一个元素之前,需要将当前元素的标记改为1或0,表示是否选择该元素。在这个算法中,a是集合S的元素,mark是标记数组,n是集合S的大小,i是当前已经选了多少个元素。