Binary Trees - PowerPoint PPT Presentation

About This Presentation
Title:

Binary Trees

Description:

Binary Trees Level 0 30 adalah parent Dari 14 dan 39 Root 53 Garis putus-putus adalah path 14 adalah child kiri dari 30 30 72 Level 1 39 adalah child kanan – PowerPoint PPT presentation

Number of Views:195
Avg rating:3.0/5.0
Slides: 19
Provided by: infor118
Category:
Tags: binary | tree | trees

less

Transcript and Presenter's Notes

Title: Binary Trees


1
Binary Trees
Level 0
30 adalah parent Dari 14 dan 39
Root
53
Garis putus-putus adalah path
14 adalah child kiri dari 30
30
72
Level 1
39 adalah child kanan dari 30
Level 2
14
39
61
84
9
23
34
47
79
Level 3
Subtree dengan 14 Sebagai root-nya
2
  • Terminologi
  • Path
  • Bayangkan seperti orang yang berjalan dari node
    ke node melalui garis yang menghubungkannya.
    Garis-garis penghubung yang delewati itulah yang
    dinamakan dengan path.
  • Root
  • Node pada posisi paling atas disebut root. Dalam
    sebuah tree hanya terdapat satu root saja.
  • Parent
  • Setiap node (kecuali root) mempunyai cabang yang
    menguhubungkan tepat satu node lain di atasnya.
    Node di atasnya inilah yang disebut parent.
  • Child
  • Setiap node bisa mempunyai satu atau lebih cabang
    yang menghubungkan ke node lainnya. Node di
    bawahnya inilah yang disebut dengan child.

3
  • Leaf
  • Node yang tidak mempunyai child disebut dengan
    leaf. Dalam sebuah tree hanya ada satu root saja
    tetapi bisa mempunyai banyak leaf.
  • Subtree
  • Setiap node bisa dipertimbangkan menjadi root nya
    subtree, yang terdiri dari beberapa children, dan
    children nya children.
  • Visiting
  • Sebuah node dikatakan dikunjungi ketika kendali
    program sampai pada sebuah node, biasanya untuk
    tujuan menyelesaikan beberapa operasi pada node,
    seperti mengecek nilai datanya kemudian
    menampilkannya.

4
  • Traversing
  • Traverse maksudnya mengunjungi semua node dalam
    tree untuk tujuan tertentu, misalnya untuk
    mengurutkan datanya.
  • Level
  • Level node adalah banyaknya generasi node yang
    dihitung mulai dari root. Jika kita mengasumsikan
    bahwa root adalah level 0, maka children adalah
    level 1, grandchildren adalah level 2, dan
    seterusnya.
  • Key
  • Medan data dalam sebuah objek biasanya didesain
    dengan menggunakan sebuah key. Nilai dari key ini
    digunakan untuk melakukan pencarian data atau
    operasi lainnya.

5
  • Tree menggunakan Java
  • class Node
  • int iData // data yang digunakan sebagai
    kunci
  • double fData // data lain
  • node leftChild // node child
    kiri
  • node rightChild // node child
    kanan
  • public void displayNode()
  • // (bagian dari tubuh method)

6
  • class Tree
  • private Node root // satu-satunya
    medan data dalam tree
  • public void find(int key)
  • public void insert(int id, double dd)
  • public void delete(int id)
  • // macem-macem methode lain
  • // akhir dari kelas tree

7
  • class TreeApp
  • public static void main(String args)
  • Tree theTree new Tree // membuat sebuah
    tree
  • theTree.insert(50, 1.5) // sisipkan 3 node
  • theTree.insert(25, 1.7)
  • theTree.insert(75, 1.9)
  • node found theTree.find(25) // cari node
    dengan key 25
  • if(found ! null)
  • System.out.println(Found the node with key
    25)
  • else
  • System.out.println(Could not find node with
    key 25)
  • // akhir main()
  • // akhir class TreeApp

8
Pencarian Node
56 lt 63
63
56 gt 27
27
80
56 gt 51
13
51
70
92
56 lt 58
33
58
82
26
56 lt 57
57
60
Pencarian Node 56
9
  • Method Pencarian
  • public Node find(int key) // pencarian node
    berdasarkan key
  • // (asumsi tree tidak kosong)
  • Node current root // mulai dari root
  • while(current.iData ! key) // selama tidak
    cocok,
  • if(key lt current.iData) // ke kiri?
  • current current.leftChild
  • else
  • current current.rightChild // atau ke
    kanan?
  • if(current null) // jika
    tidak ada child,
  • return null // tidak
    ditemukan
  • return current // ditemukan

10
Penyisipan Node
45 lt 60
60
45 gt 40
40
45 lt 50
30
50
null
45
Penyisipan Node 45
11
  • Method Penyisipan Node
  • public void insert(int id, double dd)
  • Node newNode new Node() // membuat node baru
  • newNode.iData id // sisipkan datanya
  • newNode.dData dd
  • if(rootnull) // di root tidak
    ada node
  • root newNode
  • else // sebagai root
  • Node current root // mulai dari
    root
  • Node parent
  • while(true) //
  • parent current
  • if(id lt current.iData) // ke kiri?
  • current current.leftChild

12
  • if(current null) // jika sampai
    pada baris terakhir,
  • // sisipkan di
    sebelah kiri
  • parent.leftChild newNode
  • return
  • // berhenti jika ke kiri
  • else // atau ke
    kanan?
  • current current.rightChild
  • if(current null) // jika sampai pada
    baris terakhir
  • // sisipkan di sebelah
    kanan
  • parent.rightChild newNode
  • return
  • // akhir dari else ke kanan
  • // akhir dari while
  • // akhir dari else bukan root
  • // akhir class insert()

13
Pencarian Nilai Minimum
63
47
71
22
53
67
50
60
33
11
minimum
49
51
17
Pencarian Nilai Minimum
14
  • public Node minimum() // kembalikan node dengan
    nilai kunci minimum
  • Node current, last
  • current root // mulai dari root
  • while(current ! null) // sampai node paling
    bawah,
  • last current // ingat
    node-nya
  • current current.leftChild // belok ke
    child kiri
  • return last

15
  • Method Delete
  • Node yang dihapus adalah leaf (tidak punya child)
  • Node yang dihapus mempunyai satu child
  • Node yang dihapus mempunyai dua child

16
Penghapusan Node
10
5
3
7
Penghapusan Node Tanpa Child
17
  • public boolean delete(int key) // hapus node
  • // (asumsi tree
    tidak kosong)
  • Node current root
  • Node parent root
  • boolean isLeftChild true
  • while(current.iData ! key) // mencari node
  • parent current
  • if(key lt current.iData) // ke kiri?
  • isLeftChild true
  • current current.leftChild
  • else // atau ke
    kanan?
  • isLeftChild false
  • current current.rightChild
  • if(current null) // akhir
    baris node,

18
  • // kelanjutan delete()
  • // jika tidak ada chile, langsung hapus
  • if(current.leftChildnull
  • current.rightChildnull)
  • if(current root) // jika root,
  • root null // tree kosong
  • else if(isLeftChild)
  • parent.leftChild null // putuskan
  • else // dari parent
  • parent.rightChild null
  • // continues...
Write a Comment
User Comments (0)
About PowerShow.com