计算机科学:二进制

学习计算机科学的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

例子问题2:搜索

二叉搜索树的序遍历和序遍历之间的区别是什么?

可能的答案:

唯一的区别是in order处理根节点,而preorder不处理。

顺序遍历先处理左子树,再处理根节点,再处理右子树,而预顺序遍历先处理根节点,再处理左子树,再处理右子树。

Preorder从最低到最高搜索树,inorder则不是。

顺序遍历先处理右子树,然后是根节点,再是左子树,而预顺序遍历先处理左子树,然后是根节点,再是右子树。

它们是相似的。

正确答案:

顺序遍历先处理左子树,再处理根节点,再处理右子树,而预顺序遍历先处理根节点,再处理左子树,再处理右子树。

解释

在这种情况下,名称有助于识别不同类型的遍历。顺序遍历“按顺序”处理二叉树,这意味着它将遍历左边的子树,处理节点,然后继续到右边。为什么是这样?因为要记住,二叉排序树会列出任何小于左边节点的值,以及任何大于右边节点的值,所以按顺序遍历实际上是从最大到最小。

前序遍历与前序遍历相同,只是它处理根节点首先,因此才有了“pre”顺序。

例子问题1:二进制

Public static int foo(int[] arr, int x) {

Int a = 0;

Int b = arr。长度- 1;

While (b >= a) {

Int c = (a + b) / 2;

Int v = arr[c];

如果(v == x) {

返回c;

} if(v < x) {

A = c + 1;

}其他{

B = c - 1;

返回1;

价值是什么y在下面的代码:

int[]瓦尔斯={1, 3, 4, 5, 6, 31日,41岁的51个};

intx= 41;

inty= foo (瓦尔斯、41);

可能的答案:

-1

7

6

5

41

正确答案:

6

解释

方法代码中首先要注意的是喷火它实现了二分搜索的算法。的值c作为算法的中点。这要求列表是有序的。的值一个而且b用于控制循环,以便让您搜索列表的正确部分。如果列表中间的值不等于您正在寻找的值(即。x),那么它在列表中看起来要么“在上面”,要么“在下面”(因为它被假定是有序的)。这就是发生的事情一个b是改变。

它搜索值并返回索引号如果找到了该值。否则,返回-1。因为值41在数组中,所以它返回6。

如果你不认识这个算法,你可能会有一些问题,并将不得不跟踪代码!!

例子问题1:二进制

对于二分搜索算法,下列哪项是正确的?

可能的答案:

数组必须按照从开始到结束的顺序进行探测。

数组可以不排序,但运行速度会比排序慢。

数组需要额外的空间来容纳作为搜索一部分的交换操作。

在搜索值之前,必须将数组转换为二叉搜索树。

要搜索的数组必须在搜索前排序。

正确答案:

要搜索的数组必须在搜索前排序。

解释

二分搜索假设正在搜索的数组已经排序。这是因为它探测数组中的值的方式不同。它从数组的中心开始检查值是否匹配。如果该值小于该中心元素,则假定该值位于数组的下半部分。否则,它假定值必须更大,因此在数组的上半部分。然后探查它所选择的任何一半的中心,继续这样做,直到确定没有找到值。

大学导师的学习工具