Adatszerkezetek és adattípusok. Bináris keresőfa. Fák

Hasonló dokumentumok
Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat

Elemi adatszerkezetek

Körkörös listák. fej. utolsó. utolsó. fej

Önszervező bináris keresőfák

Algoritmusok és Adatszerkezetek II.

Programozás I. C nyelv

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek II.

Programozás 5. Dr. Iványi Péter

Algoritmusok és adatszerkezetek II.

Rendezettminta-fa [2] [2]

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Elemi algoritmusok ismerete

Tuesday, March 6, 12. Hasító táblázatok

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Adatszerkezet - műveletek

Adatszerkezetek 7a. Dr. IványiPéter

Algoritmusok és adatszerkezetek II.

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Példa 30 14, 22 55,

Programozás alapjai II. (7. ea) C++

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Osztály és objektum fogalma

Memóriakezelés, dinamikus memóriakezelés

Adatszerkezetek 1. előadás

Információs Technológia

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Számláló rendezés. Példa

C++ Standard Template Library (STL)

1. Alapok. Programozás II

ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Programozás II. 2. Dr. Iványi Péter

Bevezetés a programozásba. 12. Előadás: 8 királynő

Bevezetés a C++ programozási nyelvbe

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

2018, Funkcionális programozás

Algoritmusok és adatszerkezetek II.

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Információs Technológia

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk:

Adatszerkezetek és algoritmusok

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

malloc free malloc free int sum(int a[4]) { return a[0] + a[1] + a[2] + a[3]; }

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Objektum Orientált Szoftverfejlesztés (jegyzet)

Bevezetés a programozásba 2

Algoritmusok és Adatszerkezetek II. előadás

Adatszerkezetek és algoritmusok

Programozás I gyakorlat

Programozás alapjai. 5. előadás

Programozás C és C++ -ban

Adatbázis-kezelés ODBC driverrel

Algoritmusok és adatszerkezetek II.

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

5. Gyakorlat. struct diak {

Adattípusok. Max. 2GByte

Információs Technológia

Programozás I gyakorlat. 5. Struktúrák

Adattípusok. Max. 2GByte

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Fejlett programozási nyelvek C++ Iterátorok

10. Gráf absztrakt adattípus, gráfok ábrázolása

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Országzászlók (2015. május 27., Sz14)

A félév során előkerülő témakörök

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

INFORMATIKA tétel 2019

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

ISA szimulátor objektum-orientált modell (C++)

Hierarchikus adatszerkezetek

Adatszerkezetek és algoritmusok

Adatbázis-kezelés API hívásokkal. Adatbázis-kezelés ODBC-vel. Adatbázis-kezelés SQL parancsokkal. Adatbázis-kezelés ODBC-vel.

Felhasználó által definiált adattípus

.Net adatstruktúrák. Készítette: Major Péter

117. AA Megoldó Alfréd AA 117.

II. év. Adatbázisok és számítógépek programozása

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

#include <iostream> using namespace std; // struct macska is lehetne class macska { public: int kor; int suly; }; void main() { macska cirmi;

Átírás:

9. Adatszerkezetek és adattípusok Bináris keresőfa. Fák

Fontos tudnivalók Második projekt témája: bináris kereső fák (leszállópálya feladat modelljére) Második projekt leadási határideje: április 29.-május 2.

01 02 03 Algoritmusok és adatszerkezetek Algoritmusok elemzése Adatszerkezetek és adattípusok 04 05 06 Statikus adatszerkezetek: Tétel (rekord), tömb Félstatikus adatszerkezetek: Vermek, sorok Dinamikus adatszerkezetek: Listák

07 08 09 Dinamikus adatszerkezetek: Listák Ismétlés, összefoglaló Dinamikus adatszerkezetek: Fák, Bináris keresőfák Fák Kupacok 10 11 12 Hasítótáblák Rendezési algoritmusok Keresési algoritmusok

13 14 Adattömörítés Összefoglaló és ismétlés

Bináris keresőfa function.h typedef struct root int adat; struct root *bal; struct root *jobb; root; root *create(int); void destroy(root **); void insert(root **, int); void inorder(root *); void preorder(root *); void postorder(root *); root *Delete(root **, int); root *Find(root *, int); #endif // FUNCTIONS_H_INCLUDED

Bináris keresőfa (fácska) main.c int main() root *tree; tree = create(); tree = NULL; FILE *f; //állománykezelés int x; while(scanf("%d", &x)!=eof) insert(&tree, x); printf("inorder: "); inorder(tree); printf("\npreorder: "); preorder(tree); printf("\npostorder: "); postorder(tree); int y = 3; root *facska; facska = (root *)malloc(sizeof(root)); if(!facska) printf("sikertelen lefoglalas"); return 0; facska = Find(tree, y); printf("\nadott ertektol kezdodo fa: "); preorder(facska); destroy(&tree);

Bináris keresőfa function.c void insert(root **fa, int a) if((*fa) == NULL) (*fa) = create(a); else if((*fa)->adat > a) insert(&((*fa)->bal),a); else insert(&((*fa)->jobb),a); root *create(int a) root *ag; ag = (root *)(malloc(sizeof(root))); if(!ag) printf("sikertelen lefoglalas"); return 0; ag->adat = a; ag->jobb = NULL; ag->bal = NULL; return ag;

Bináris keresőfa function.c void inorder(root *fa) if(fa->bal) inorder(fa->bal); printf("%3d ", fa->adat); if(fa->jobb) inorder(fa->jobb); void preorder(root *fa) printf("%3d ", fa->adat); if(fa->bal) preorder(fa->bal); if(fa->jobb) preorder(fa->jobb); void postorder(root *fa) if(fa->bal) postorder(fa->bal); if(fa->jobb) postorder(fa- >jobb); printf("%3d ", fa- >adat);

Fák bináris fák - ábrázolásai

Fák bináris fák kimeneti ábrázolásmódok

Fák bináris fák kimeneti ábrázolásmódok

Fák bináris fák bemeneti ábrázolásmódok

Gyakorlatok http://btv.melezinek.cz/binary-heap.html

Bináris fa function.h typedef struct root int adat; struct root *bal; struct root *jobb; root; root *create(int); void destroy(root **); root * insert(); void inorder(root *); void preorder(root *); void postorder(root *); root *Delete(root **, int); bool find(root *, int); #endif // FUNCTIONS_H_INCLUDED

Bináris fa function.c void destroy(root **fa) if((*fa)!= NULL) destroy(&((*fa)->bal)); destroy(&((*fa)->jobb)); free((*fa)); (*fa) = NULL; root *Find(root *fa, int a) if(fa == NULL) return 0; if(a == fa->adat) return fa; else if(a < fa->adat) Find(fa->bal, a); else Find(fa->jobb, a);

Bináris fa function.c root *insert() root *newnode; int x; printf("enter data(-1 for no data):"); scanf("%d",&x); if(x==-1) return NULL; newnode=create(); newnode->data=x; printf("enter left child of %d:\n",x); newnode->left=insert(); printf("enter right child of %d:\n",x); newnode->right=insert(); bool find(struct root* node, int key) if (node == NULL) return false; if (node->data == key) return true; bool res1 = find(node->left, key); if(res1) return true; bool res2 = find(node->right, key); return res2; return newnode;

Dokumentáció https://moodle.ms.sapientia.ro/course/view.php?id=32 Cormen-Lieserson-Rivest-Stein.-.Uj.algoritmusok.pdf https://www.geeksforgeeks.org/binary-search-tree-set-2-delete/ http://btv.melezinek.cz/binary-heap.html