Тест 3
Класът BinarySearchTree съдържа
следната член-функция (Code Fragment 9.3):
void setItem(const BTPosition& p,
const BSTItem& i) const
{
/*add*/
p.element().setKey(i.key());
p.element().setElement(i.element());
}
Отбележете верни/неверни твърдения
за тази функция.
(да) Функцията поставя Item от BST
(речник) на позиция p в LinkedBinaryTree.
(не) Като заместим /*add*/ с Element
e = i.element(); получаваме
синтактична грешка.
Отбележете верни/грешни твърдения
за асимпотична оценка за следните
функции:
(РґР°) n2 e O(n3)
(РЅРµ) 3 + n2 e o(n)
Дадени са следните дефиниции:
int i = 4, j = 2, k = 1;
Определете дали дадената като
коментар стойност е вярна/грешна
стойност на израза.
(РґР°) i -= j // 2
(РЅРµ) j <<= j // 4
Посочете верни/неверни дефиниции и
твърдения за търсещи дървета.
(да) Търсене в AVL дърво с n члена
отнема време O(log n).
(не) Всеки вътрешен възел от
многоканално търсещо дърво има
най-много две деца.
Дадено е (2,4) дърво АТД: T =
{12}({3,6,9},{15}). Външните възли не са
включени в представянето.
Определете дали даденото след
операцията (2,4)-дърво е получено като
резултат от прилагане на
операцията.
(РґР°) insertItem(1) - T={6,12}({1,3}, {9},{15})
(РЅРµ) insertItem(1) - T={3,12}({1,6,9},{15})
Дадено е червено-черно
дърво АТД, като черните възли са
bold, а червените
- italic. Външните
възли не са включени
в представянето. Определете дали
даденото след операцията червено-черно
дърво е получено като резултат от
прилагане на операцията.
(РґР°) 6(8) -
insertItem(7) - 7(6,8)
- 5(7) - insertItem(6)
- 5(6, 7)
Прост алгоритъм за разрешаване на
колизии в хеш таблици e линейно
пробване. Даден е клетъчен масив A
= {35, 14, D, 21, E, 12, E} с капацитет N=7,
където E означава "empty" и D
означава "deattached" (или "available") елемент
на масива. Хеш функцията e h(k)
= k mod 7. Посочете верни/неверни
съответствия, като след -> е
дадено предполагаемото място на
добавения елемент в масива.
(РґР°) insrtItem(7) -> A[2] = 7
(РЅРµ) insrtItem(10) -> A[3] = 10
Дадено е двоично дърво АТД: T =
a(b(c(d,e),f),g(h,i(j(k,l),m)). Дали дадената
редица е част от редицата от възли,
получена чрез Ойлерово обхождане на
двоичното дърво?
(РґР°) abcd
(РЅРµ) ecbc
Постройте двоично дърво,
представящо следния аритметичен
израз: (x + 2*(y
- 2)) / 2. Дали дадената редица е
част от редицата от възли, получена
чрез preorder обхождане на двоичното
РґСЉСЂРІРѕ?
(РґР°) / + x
(РЅРµ) x + 2
Даден е стек АТД: S = (5,3,4,9).
Върхът на стека е 5. Посочете
вярно/невярно съответствие функция
- върната стойност - стека
S след изпълнението на
функцията.
(РґР°) push(1) - NONE - S=(1,5,3,4,9)
(РЅРµ) push(10) - NONE - S=(5,3,4,9,10)
Дадена е опашка АТД: Q = (8,7,2).
Начало на опашката е елементът 8.
Посочете вярно/невярно
съответствие функция -
върната стойност -
опашката Q след изпълнението
на функцията.
(РґР°) enqueue(5) - NONE - Q=(8,7,2,5)
(РЅРµ) enqueue(7) - 7 - Q=(8,7,2,7)
Даден е дек АТД: D = (8,1,3). Начало
на дека е елемантът 8. Посочете
вярно/невярно съответствие функция
- върната стойност -
декът D след изпълнението на
функцията.
(РґР°) insertFirst(5) - NONE - D =(5,8,1,3)
(РЅРµ) insertFirst(6) - NONE - D =(8,6,1,3)
Дадено е AVL дърво: 44(17(-,32),78(50(48,62),88)).
Външните възли не са включени в
представянето. Определете дали
даденото след операцията AVL дърво е
получено като резултат от прилагане
на операцията.
(РґР°) insertItem(54)\\ 44(17(-,32),62(50(48,54),78(-,88)))
(РЅРµ) removeItem(32) 44(17,78(50(48,62),88))
Дадено е двоично дърво. Да се
провери дали редицата след ; е
част от inorder обхождане на дървото.
(РґР°) c(b(a,d),e);bdc
(РЅРµ) c(b(a,d),e(f,g));cfd
Постройте двоично дърво,
представящо дадения аритметичен
израз и проверете дали редицата x2y
e част от postorder обхождане на
полученото дърво.
(РґР°) x+2*y
(РЅРµ) x/2-y
Класът Position e включен в
дефиницията на класа BinarySearchTree
(Code Fragment 9.2). Отбележете
верни/неверни твърдения за
член-функцията
Element& element()
{
return btPos.element().element();
}
РѕС‚ class Position.
(да) Върнатата стойност е псевдоним
на член-данна на класа Item.
(не) btPos e член-данна в класа BinarySearchTree.
Посочете верните и неверни
дефиниции и твърдения за линейни
структури от данни.
(да) Дек е контейнер от обекти, който
поддържа добавяне и изваждане от
двата края на редицата.
(не) Линейна редица, която поддържа
достъп до елементите си чрез
техните рангове се нарича списък.
Отбележете верни/грешни дефиниции
за асимптотични нотации.
(да) f(n) e O(g(n)), ако
има положителни константи c и N,
такива, че f(n)<cg(n) за
n>N.
(не) g(n) e O(f(n)), ако има
положителни константи c и N,
такива, че f(n)<cg(n) за
РІСЃСЏРєРѕ n>N.
Даден е следния код:
void fun1()
{ throw runtime_error("ERR" ); }
void fun2() throw(runtime_error)
{ ... }
void fun3() throw(runtime_error)
{ fun2(); }
int main()
{ try
{ fun3(); }
catch (runtime_error e)
{
cout << e.what();
}
return 0;
}
Като заместим ... с дадения
оператор, дали ERR ще се
отпечати на екрана?
(РґР°) fun1();
(РЅРµ) fun2();
Посочете верните/неверните
дефиниции и твърдения за дървета.
(да) Ако възел u е родител на
възел v, казваме, че v е дете
РЅР° u.
(не) Един възел е вътрешен, ако няма
деца и външен, ако има едно или
повече деца.