Sei sulla pagina 1di 14

Java 1 - Fundamente

1. Fie secventa Java:

int a = 3; if (a++ < 4) if (++a < 4)


System.out.println(a); else System.out.println(a);

Ce se poate despre aceasta?


a. eroare la compilare
b. afiseaza 4
c. afiseaza 5
d. compileaza iar la executare nu afiseaza date

2. Fie urmatorul program Java:

public class Program3{


static void f(int k){
switch(k){
default: System.out.print("i "); break;
case 1: System.out.print("1 "); break;
case 2: case 3: System.out.print("23 "); break;
case 4: case 5: System.out.print("45 ");
}
}
public static void main(String[] x){
for (int i = 0; i< 6; i++) f(i);
}
}
Ce se poate spune despre acesta?
a. eroare la compilare
b. afiseaza i 1 23 23 45 45
c. afiseaza i 1 23 45
d. afiseaza i 1 23 23 45 45 i

3. Fie secventa Java:


int i = 1, suma = 0;
for (; ; ){ suma += i++; if (i > 5) break;}
System.out.print(suma);
Ce se poate spune despre aceasta?
a. afiseaza 0
b. afiseaza 10
c. afiseaza 15
d. eroare la compilare: lipsesc partile componente ale lui for!

4. Fie programul Java:


public class Program4 {
public static void main(String [] x){
int v[] = {2, 4, -2, 8, -2}, i = 0, suma = 0;
for (i = 0; i<10; ++i) {
if(v[i] < 0) continue; suma += v[i];
}
System.out.println("suma = " + suma);
}
}
Ce se poate spune despre acesta?

a. afiseaza 0
b. afiseaza 14
c. afiseaza -4
d. eroare la compilare

5. Fie urmatorul program Java:


public class Program5{
public static void main(String [] x){
float f = 4.50;
System.out.println(f);
}
}
Ce se poate spune despre acesta?
a. eroare la compilare: nu se poate converti implicit 4.50 la float
b. afiseaza 4.5
c. afiseaza 4.50
d. afiseaza 4.500000

6. Fie urmatoarea secventa Java:


String s1 = "anul" + 200 + 5, s2 = 200 + 5 + "anul";
System.out.println("s1 =" + s1 + ", s2 = " + s2);
Ce va afisa la executia sa?
a. s1 = anul2005, s2 = 205anul
b. s1 = anul205, s2 = 2005anul
c. s1 = anul2005, s2 = 2005anul
d. s1 = anul205, s2 = 205anul

7. Fie urmatoarea secventa Java:


int as = 3, bs = 2, cs = 4;
System.out.print(((as<bs++) & (cs++ < bs)) + " ");
System.out.println(as + " " + bs + " " + cs);
System.out.print(((as < bs++) && (cs++ < bs++)) + " ");
System.out.println(as + " " + bs + " " + cs);
Ce se poate spune despre aceasta?
a. Eroare la compilare: nu se poate aduna o valoare booleana cu un String
b. Se afiseaza false 3 3 5 \n false 3 4 4
c. Se afiseaza false 3 3 5 \n false 3 4 5
d. Se afiseaza false 3 3 5 \n false 3 5 6

8. Fie urmatorul program Java:


public class Test1{
public static void main(String x[]){
int a = 3;
int b = (a = 2) * a;
int c = b * (b = 5);
System.out.println("a = " + a + ", b = " + b + ", c = " +c);
}
}
Ce va afisa acesta le executare?
a. a = 2, b = 4, c = 20
b. a = 2, b = 5, c = 20
c. a = 2, b = 5, c = 25
d. a = 3, b = 6, c = 30 raspuns valabil daca lipseste aceasta paranteza... altfel eroare

9. Fie urmatoarea secventa Java:


System.out.println((1<2)?5:(3<4))+" ");
Ce se poate spune despre aceasta?
a. Eroare la compilare: nu se poate converti o valoare booleana la un int
b. afiseaza 5
c. afiseaza 37
d. afiseaza true

10. Fie urmatoarea secventa Java:


double d = 2.95; int i = 4; System.out.println(++d>i?d:i);
Ce se poate spune despre aceasta?
a. Eroare la compilare: nu putem converti double la int
b. afiseaza 3.95
c. afiseaza 4
d. afiseaza 4.0

11. Fie secventa:


System.out.println(1 < 2 < 3);
Ce se poate spune despre aceasta?
a. Eroare la compilare
b. Eroare la executare
c. Afiseaza true
d. Afiseaza false

12. Este limbajul Java independent de platforma?


a. Da, deoarece se va crea o masina virtuala Java care are drept scop traducerea
instructiunilor unui byte cod in instructiuni masina pentru sistemul de operare curent.
b. Nu, deoarece este imposibil ca acelasi program Java sa fie executat pe diferite sisteme de
operare fara a fi modificat.

13. Cum putem initializa pointeri in Java?


a. folosind operatorul de adresa &
b. folosind operatorul de dereferentiere *
c. nu exista pointeri in Java

14. Cu ce comanda putem dezasambla un cod binar Java?


a. java -p c. javap
b. javac d. rmic

15. Ce puteti spune despre urmatorul program Java?


class C1 {
int x = 1;
void f(int x) {this.x = x;}
int getX_C1() {return x;} raspuns valabil daca in loc de INT este VOID
}
class C2 extends C1{ float x = 5.0f;
int f(int x){super.f((int)x);}
float getX_C2(){return x;}
}
public class SuprascriereSiAscundere{
public static void main(String args[]){
C2 obiect = new C2();
obiect.f(4);
System.out.print(obiect.getX_C2() + " ");
System.out.println(obiect.getX_C1());
}}

a. Programul este corect si va afisa 5.0 4


b. Afiseaza 5 4
c. Afiseaza 4.0 4
d. Eroare le compilare, din cauza suprascrierii lui x din C2.
e. Eroare la compilare din cauza metodei f() care este suprascrisa in mod diferit.

16. Ce puteti afirma despre urmatorul program Java?


class C1{
static String f() {return "Mesajul Unu din C1";}
String g() {return "Mesajul Doi din C1";}
}
class C2 extends C1 {
static String f() {return "Mesajul Unu din C2";}
String g() {return "Mesajul Doi din C2";}
}
public class Test {
public static void main(String[] args){
C1 obiect = new C2();
System.out.println(obiect.f() + ", " + obiect.g());
}
}

a. Corect. Afiseaza: Mesajul Unu din C1, Mesajul Doi din C1


b. Corect. Afiseaza Mesajul Unu din C1, Mesajul Doi din C2
c. Corect. Afiseaza Mesajul Unu din C2, Mesajul Doi din C1
d. Corect. Afiseaza Mesajul Unu din C2, Mesajul Doi din C2
e. Eroare la variabila obiect din clasa Test

17. Fie urmatorul program Java:


class C1 { int x = 1; C1(){ System.out.print("x =" + x); }}
class C2 extends C1 { int y = 3; C2(int y) {this.y = y;}}
public class Test26{ public static void main(String[] a){
C2 obiect = new C2();
System.out.println(" y = " + obiect.y);
}
}
Ce puteti spune despre aceasta?
a. Eroare la compilare: nu exista constructor fara argumente
b. Programul este corect si la executare afiseaza y = 3
c. Programul este corect si la executare afiseaza x = 1 y = 3

18. Fie urmatorul program Java:


class x {
private int x = 1;
void x(){System.out.print(x+ " "); }
}
class y extends x {
private int x = 2;
void x(){super.x(); System.out.print(x);}
}
public class TestAtribute{
public static void main (String [] a){
y ob = new y(); ob.x();
}
}
Ce puteti spune despre acesta?

a. Eroare la compilare: nu se pot defini un atribut si o metoda cu acelasi nume (x)


b. Eroare la compilare: nu se poate defini un atribut cu numele clasei (x)
c. Eroare la compilare: nu se poate defini un atribut cu acelasi nume intr-o clasa derivata (x)
d. Programul este corect si la executare va afisa 1 2

19. Ce va afisa, la executare, urmatorul program:


public class TestStatic{
public static void main(String [] a){
Exemplu a = new Exemplu();
Exemplu b = new Exemplu();
System.out.print(" a.x = " + a.x);
a.x = 100; b.x = 200;
System.out.print(" a.x = " + a.x);
}}
class Exemplu{ static int x = 0;
Exemplu() {x++;}
}

a. a.x = 2 a.x = 200


b. a.x = 0 a.x = 100
c. a.x = 1 a.x = 100
d. a.x = 1 a.x = 101
e. a.x = 2 a.x = 100

20. Ce puteti afirma despre urmatorul program?


interface I1 {float x = 2.3f;}
public class Test implements I1 {
public static void main(String[] a){ System.out.print(x
+ " "); x = 6.7f; System.out.println(x); }
}
a. Eroare de compilare: valoarea variabilei x nu se mai poate modifica
b. La executare va afisa 2.3f 6.7f
c. La executare va afisa 2.3f 2.3f
d. La executare va afisa 2.3 6.7
e. La executare va afisa 2.3 2.3

21. Ce puteti spune despre urmatorul program Java?


interface I1 {int x = 2;}
interface I2 extends I1 {int y = 3;}
class C1 {int y = 4;}
public class C2 extends C1 implements I2 {
public static void main(String [] a){
System.out.println("x = " + x + ", y = " + y);}}

a. Va aparea eroare la compilare, y este ambiguu pentru C1 si I2


b. La executare va afisa x = 2, y = 3
c. La executare va afisa x = 2, y = 4

22. Ce puteti afirma despre urmatorul program Java?


class C1 { public String f(){
return this.getClass().getName();}
}
abstract class C2 extends C1{ int x = 2; public abstract
Stringf();
}
class C3 extends C2{ int y = 3; public String f(){
return super.f()+", x = " + x + ", y = " + y;}}
public class TestAbstract{
public static void main(String [] a){ C3 ob = new C3();
System.out.println(ob.f());}
}

a. La executare va afisa C3, x = 2, y = 3


b. La executare va afisa C1, x = 2, y = 3
c. Eroare la compilare, clasa C2, metoda f()
d. Eroare la compilare, clasa C3, super.f()
e. Eroare la executare: ciclare in metoda f() din C3

23. Ce modificare trebuie facuta urmatorului program Java


pentru a fi corect?

abstract class C1{


int x = 2;
public final abstract String f();
}
final class C2 extends C1 {
int y = 3; public String f(){
return "x = " + x + ", y = " + y;
}
}
public class TestFinal{
public static void main(String [] a){
C2 ob = new C2();
System.out.println(ob.f());
}
}
a. Trebuie sters final din definitia f() in clasa C1
b. Trebuie sters final din clasa C2
c. Trebuie sters abstract din C1
d. Trebuie stearsa initializarea int x = 2; din C1
e. Este corect, iar la executare va afisa x = 2, y = 3.

24. Ce puteti spune despre urmatorul program?


public class Test{
int i = 3, j = 4;
public static void main(String[] a){
System.out.println(i ++ + ++ j);
}
}

a. Va aparea eroare la compilare, deoarece parametrul metodei main() nu e corect specificat


b. Va aparea eroare la compilare deoarece nu s-au inserat paranteze intre ++, adica (i++) si
(++j)
c. Va aparea eroare la compilare, deoarece din functia statica main() nu putem accesa
variabilele nestatice i si j
d. La executare se va afisa 8
e. La executare se va afisa 9

25. Fie urmatorul program Java:


class C0 {int x = 1;}
class C1 {int y = 2;}
class C2 extends C0, C1 { int z = 3;}
public class TestDoi {public static void main(String[] a){
C2 obiect = new C2();
System.out.println(obiect.x+obiect.y+obiect.z);
}}
Ce puteti spune despre acesta?
a. Eroare la compilare. Clasa C2 nu poate fi derivata direct din doua clase
b. Eroare la compilare. Clasa C2 nu are constructor fara argumente
c. Programul este corect si la executare va afisa 6
Java 2 - Fire de executare subiecte examen an 2 sem 2 - 2010

1. D Care din urmatoarele afirmatii este falsa?

a. Firele de executare pot partaja aceleasi resurse, iar accesul la acestea poate fi
concurent sau secvential.
b. Un fir de executare este un obiect al unei clase care extinde clasa Thread
c. Un fir de executare este un obiect al unei clase care implementeaza interfata Runnable
d. Cand se executa un thread, metoda apelata este exec();

2. Care din urmatoarele expresii nu descriu o stare a unui fir de executare?

a. in executare (running)
b. in asteptare (waiting)
c. pregatit pentru executare (ready)
d. terminat (dead)
? e. de serviciu (daemon) - cred ca este d
Asadar, un fir de executie se poate gasi in una din urmatoarele patru stari:

1. New Thread
2. Runnable
3. Not Runnable
4. Dead

3 B. Masina virtuala Java ramane pornita atata vreme cat exista activ un fir care nu este
de tipul Daemon.

a. Adevarat
b. Fals

4. ? Care din situatiile urmatoare nu determina trecerea unui fir din starea de executare
(running) in starea terminat (dead)?
a. Terminarea normala a metodei run()
b. Apelarea metodei stop()
c. oprirea masinii virtuale in urma unui apel exit() – cred ca este c dar s-ar putea sa fie d
d. folosirea functiei yield()

Starea "Dead" Este starea in care ajunge un fir de executie la terminarea sa. Un fir de
executie nu poate fi oprit din program printr-o anumita metoda, ci trebuie sa se termine in
mod natural la terminarea metodei run pe care o executa. Spre deosebire de versiunile curente
ale limbajului Java, in versiunea 1.0 exista metoda stop a clasei Thread care termina fortat un
fir de executie, insa ea a fost eliminata din motive de securitate.
Asadar, un fir de executie trebuie sa-si "aranjeze" singur propria sa "moarte".

5A In care din situatiile urmatoare un fir Java trece din starea in executare (running)
intr-o stare de blocare temporara?

a. apelul suspend()
c. apelul destroy()
b. apelul stop()
d. apelul exit()
6. A In Java exista K metode pentru crearea unui thread. K =?

a. 3
c. 1
b. 2
d. 4

7. C Pentru a lucra cu grupuri de fire se utilizeaza clasa:

a. Thread
b. Runnable
c. ThreadGroup

8 A Pornirea firelor de executare se realizeaza prin apelul start().

a. Adevarat
b. Fals
9. Metoda destroy() distruge un thred
a. si elibereaza resursele folosite.
b. fara sa elibereze resursele folosite.

10.A Apelul metodei sleep() cere oprirea rularii firului de executare curent pentru un
interval de timp specificat.

a. Adevarat
b. Fals

11.B Un fir de executare nu poate crea un alt fir de executare.

a. Adevarat
b. Fals

12. O aplicatie poate crea cel mult 16 fire de executare.

a. Adevarat
b. Fals

13 B? . Pentru fiecare fir de executare trebuie sa definim o clasa.

a. Adevarat
b. Fals

14 A . Metoda Join permite sincronizarea a doua fire de executare: firul curent se


blocheaza in asteptarea
terminarii firului asupra caruia se executa metoda.

a. Adevarat
b. Fals
15. A De cate ori se apeleaza metoda start() in viata unui fir de executare?

a. o singura data
b. de cate ori este nevoie

16B . De cate ori se apeleaza metoda destroy() in viata unui fir de executare?

a. de cate ori este nevoie


b. o singura data

17. E Care din urmatoarele caracterizari nu se refera la fire demon?

a. Sunt fire speciale similare cu procesele demoni.


b. Realizeaza anumite activitati in fundal (background)
c. Se distrug automat la terminarea celorlaltor fire de executare.
d. Au prioritate de executie redusa, fiind planificate la CPU cand acesta nu ruleaza alte
fire.
e. Sunt procese care gestioneaza rularea firelor de executare..

18. A Un fir de executare poate fi transformat in fir demon folosind apelul

a. setDaemon()
b. sleep()
c. interrupt()

19. C Prioritatea maxima a unui fir de executare este

a. 1
b. 5
c. 10

20.A Prin intermediul firelor de executare se pot executa simultan mai multe secvente de
cod.

a. Adevarati
b. Fals
Metode de elaborarea algoritmilor
An 2 Sem 2- 2010

1 A . Se considera urmatoarea functie recursiva apelata numai pentru numere naturale nenule:
int f(int a, int b){
if (a<b) return a; else return f(a-b, b);
}
Care dintre urmatoarele functii este echivalenta cu functia data?

A. int f(int a, int b){return a*b;} c. int f(int a, int b){return a%b;}
b. int f(int a, int b){return a-b+1;} d. int f(int a, int b){return a/b;}

2/29L. Se considera definitia


long f(int n, int k){
if (n == k || k == 1) return 1;
if (n < k) return 0;
long s=0, i;
for (i=1; i<=k; i++) s+=f(n-k,i);
return s;
}
Stabiliti ce valoare returneaza apelul f(6,3).

A. 3 c. 2
b. 1 d. 4

3 A. Aplicand metoda backtracking pentru a genera toate permutarile celor n elemente ale unei multimi, o
solutie se memoreaza sub forma unui tablou unidimensional x1, x2, ..., xn. Daca sunt deja generate
valori pentru componentele x1, x2, ..., xk-1, iar pentru componenta xk (1 <k<n)au fost testate toate
valorile posibile si nu a fost gasita niciuna convenabila, atunci:
A. se incearca alegerea unei noi valori pentru componenta xk-1.
b. se incearca alegerea unei noi valori pentru componenta x1, oricare ar fi valoarea k.
c. se incheie algoritmul.
d. se incearca alegerea unei valori pentru componenta xk+1.

4. B Se considera multimea {1, 7, 5, 16, 12}. Se genereaza prin metoda backtracking toate submultimile
sale formate din exact 3 elemente: primele patru solutii generate sunt, in ordine: {1, 7, 5}, {1, 7, 16},
{1, 7, 12}. Care dintre solutii trebuie eliminate din sirul urmator astfel incat cele ramase sa apara in sir
in ordinea generarii lor:
{1, 16, 12}, {5, 16, 12}, {7, 5, 16}, {7, 5, 12}
a. {1, 16, 12} c. {7, 5, 16}
b. {5, 16, 12} d. {7, 5, 12}

5. A . Daca pentru generarea tuturor submultimilor unei multimi A = {1, 2, ..., n} cu 1 n 10, se utilizeaza
un algoritm backtracking astfel incat se afiseaza in ordine, pentru n=3, submultimile {}, {1}, {2}, {3},
{1, 2}, {1,3}, {2,3}, {1, 2, 3}, atunci, utilizand exact acelasi algoritm pentr n = 4, in sirul
submultimilor generate, solutia a 7-a va fi:
a. {1,3} c. {1,2,3}
b. {4} d. {1,4}
6. B Generarea tuturor cuvintelor de 4 litere, fiecare litera putand fi orice element din multimea {a, c, e, m,
v, s}, se realizeaza cu ajutorul unui algoritm echivalent cu algoritmul de generare a:
a. produsului cartezian c. partitiilor unei multimi
b. combinarilor d. permutarilor

7. C Pentru a determina toate modalitatile de a scrie numarul 8 ca suma de numere naturale nenule distincte
(abstractie facand de ordinea termenilor) se foloseste metoda backtracking obtinandu-se, in ordine,
toate solutiile 1+2+5, 1+3+4, 1+7, 2+6, 3+5. Aplicand exact acelasi procedeu, se determina solutiile
pentru scrierea numarului 10. Cate solutii de forma 1+ ... exista?
a. 3 c. 5
b. 4 d. 6

8. C Generarea tuturor sirurilor formate din trei elemente, fiecare element putand fi oricare numar din
multimea {1, 2, 3}, se realizeaza cu ajutorul unui algoritm echivalent cu algoritmul de generare a:
a. permutarilor c. produsului cartezian
b. combinarilor d. aranjamentelor

9 B . O singura statie de servire (procesor, pompa de benzina etc) trebuie sa satisfaca cererile a n clienti.
Timpul de servire necesar fiecarui client este cunoscut in prealabil: pentru clientul i este necesar un
timp ti, 1 i n. Daca dorim sa minimizam timpul total de asteptare atunci
a. selectam intotdeauna clientul cu timpul maxim de servire din multimea de clienti ramasa
b. selectam intotdeauna clientul cu timpul minim de servire din multimea de clienti ramasa

10 A. Se considera graful ponderat din imaginea alaturata.

Ordinea de selectare a muchiilor in vederea obtinerii unui arbore partial de cost minim, prin utilizarea
strategiei Greedy de tip Kruskal, este:
a. (1, 2), (2, 3), (4, 5), (6, 7), (1, 4), (4, 7)
b. (1, 2), (2, 3), (6, 7), (4, 5), (2, 5), (1, 4)
c. (5, 6), (5, 7), (3, 6), (2, 4), (3, 5), (1, 4)

11 A. Managerul artistic al unui festival trebuie sa selecteze o multime cat mai ampla de spectacole care pot
fi jucate in singura sala pe care o are la dispozitie. Stiind ca i s-au propus 8 spectacole si pentru fiecare
spectacol i-a fost anuntat intervalul in care se va desfasura:
1: [10, 16)
2: [2, 4)
3: [7, 9)
4: [21, 25)
5: [10, 12)
6: [12, 15)
7: [7, 8)
8: [20, 27)
Care spectacole trebuie selectate pentru a permite spectatorilor sa vizioneze un numar cat mai mare de
spectacole?
a. 2, 3, 5, 6, 8 c. 2, 4, 5, 6, 7
b. 1, 8 d. 2, 3, 1, 8

12.B Se considera ca trebuie transportate cu ajutorul unui rucsac de capacitate 10kg, obiecte cu greutatile
8kg, 6kg si 4kg. Pentru fiecare kg transportat castigul obtinut este 1 LEU.
Stiind ca obiectele se incarca integral in sac si ca se poate alege cel mult un obiect din fiecare tip,
atunci solutia optima este (se noteaza prin 1 - selectarea obiectului, iar prin 0 - neselectarea acestuia):
a. (1, 0, 0) c. (1, 1, 1)
b. (0, 1, 1) d. (1, 1, 0)

13 D. Se doreste planificarea optimala (penalizarea totala sa fie minima) a 7 lucrari, fiecare lucrare i fiind
data prin termenul de predare t[i] si penalizarea p[i] care se plateste in cazul in care lucrarea nu este
finalizata la timp. Se presupune ca pentru executarea unei lucrari este necesara o unitate de timp si ca
nu se pot executa doua lucrari in acelasi timp.
Se considera datele de intrare:
i t[i] p[i]
1 4 50
2 3 40
3 2 60
4 3 20
5 4 70
6 2 10
7 1 130
Care este penalizarea totala minima ce se poate obtine?

a. 10 c. 20
b. 130 d. 70

14 C . Fie tabloul unidimensional a in care elementele sunt, in ordine 1, 3, 5, 7, 10, 16, 21. Pentru a verifica
daca numarul x = 4 se afla printre elementele tabloului, se aplica metoda cautarii binare. Care este
succesiunea corecta de elemente cu care se compara x?
a. 1, 3, 5
b. 7, 5, 3
c. 7, 3, 5
d. 21, 16, 10, 7, 5, 3

15 B. Se considera doua tablouri unidimensionale A si B: A = (1, 3, 5, 9, 10), respectiv B = (2, 4, 6, 7). In


urma interclasarii lor in ordine crescatoare se obtine tabloul cu elementele:
a. (1, 2, 3, 4, 5, 6, 9, 7, 10)
b. (1, 2, 3, 4, 5, 6, 7, 9, 10)
c. Nu se poate realiza interclasarea
d. (1, 3, 5, 9, 10, 2, 4, 6, 7)

16.? Fie secventele de numere:


i) 1, 4, 6, 8, 9
ii) 8, 5, 4, 3, 2, 1
iii) 2, 3, 8, 5, 9
Algoritmul de cautare binara se poate aplica direct, fara alte prelucrari prealabile
a. numai secventei i)
b. numai secventei iii)
c. numai secventei ii)
d. atat secventei i) cat si secventei ii)

17.C Se considera metoda sortarii prin interclasare a n siruri de caractere in ordine lexicografica crescatoare.
Presupunand ca procesul de divizare se bazeaza pe metoda injumatatirii la fiecare pas, atunci timpul
cerut de algoritm este:
a. O(n)
b. O(n2)
c. O(n log2n)
d. O(n ln n)

18.D Se presupune ca n siruri de caractere sunt sortate prin metoda sortarii rapide (quicksort). Notam prin
T(n) numarul mediu de comparatii pentru ordonarea lexicografica crescatoare a celor n siruri. Atunci
T(n) =
a. O(n)
b. O(n2)
c. O(n ln n)
d. O(n log2n)

19. C Se considera arborele binar a carui reprezentare standard (ST[i] - descendent stang, DR[i] - descendent
drept) este ST = (2, 3, 4, 0, 6, 0, 0, 0, 0) si DR = (8, 5, 0, 0, 7, 0, 0, 9, 0), unde prin 0 s-a notat lipsa
descendentului corespunzator. Atunci prin parcurgerea in inordine, nodurile arborelui sunt vizitate
astfel:
a. 1, 2, 3, 4, 5, 6, 7, 8, 9
b. 1, 2, 8, 3, 5, 9, 4, 6, 7
c. 4, 3, 2, 6, 5, 7, 1, 8, 9
d. 4, 3, 6, 7, 5, 2, 9, 8, 1

Potrebbero piacerti anche