• Tidak ada hasil yang ditemukan

Trees and Binary Trees

N/A
N/A
Protected

Academic year: 2018

Membagikan "Trees and Binary Trees"

Copied!
55
0
0

Teks penuh

(1)

TREES AND

BINARY TREES

Become Rich

Force Others

to be Poor BanksRob

Stock Fraud

(2)

NATURE VIEW OF A TREE

branch

es

leaves

(3)

COMPUTER SCIENTIST’S VIEW

branches

leaves

root

(4)

WHAT IS A TREE

 A tree is a finite nonempty

set of elements.

 It is an abstract model of a

hierarchical structure.

 consists of nodes with a

parent-child relation.

 Applications:

 Organization charts  File systems

 Programming

environments

Computers”R”Us

Sales Manufacturing R&D

Laptops Desktops US International

(5)

subtree

TREE TERMINOLOGY

 Root: node without parent (A)

 Siblings: nodes share the same parent  Internal node: node with at least one

child (A, B, C, F)

 External node (leaf ): node without children (E, I, J, K, G, H, D)

 Ancestors of a node: parent,

grandparent, grand-grandparent, etc.  Descendant of a node: child,

grandchild, grand-grandchild, etc.  Depth of a node: number of ancestors  Height of a tree: maximum depth of

any node (3)

 Degree of a node: the number of its children

 Degree of a tree: the maximum number of its node.

A

B C D

G H

E F

I J K

(6)

TREE PROPERTIES

A B C D G E F I H Property Value Number of nodes

Height Root Node Leaves

Interior nodes Ancestors of H Descendants of B Siblings of E

(7)

TREE ADT

 We use positions to abstract

nodes

 Generic methods:

 integer size()

 boolean isEmpty()

 objectIterator elements()  positionIterator positions()

 Accessor methods:

 position root()  position parent(p)

 positionIterator children(p)

Query methods:

boolean isInternal(p) boolean isExternal(p) boolean isRoot(p)

Update methods:

swapElements(p, q)

object replaceElement(p, o)

(8)

INTUITIVE REPRESENTATION OF TREE NODE

List Representation

( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) )

The root comes first, followed by a list of links to sub-trees

Data Link 1 Link 2 … Link n

(9)

TREES

 Every tree node:

 object – useful information

 children – pointers to its children

Data

Data   Data  Data  

(10)

A TREE REPRESENTATION

 A node is represented by

an object storing

 Element  Parent node

 Sequence of children

nodes B D A C E F  B  

A D F

C

(11)

LEFT CHILD, RIGHT SIBLING

REPRESENTATION

Data Left Child

Right

Sibling A

B C D

I H

G F

E

(12)

TREE TRAVERSAL

 Two main methods:

 Preorder  Postorder

 Recursive definition

 Preorder:

 visit the root

 traverse in preorder the children (subtrees)

 Postorder

(13)

PREORDER TRAVERSAL

 A traversal visits the nodes of a

tree in a systematic manner

 In a preorder traversal, a node is

visited before its descendants

 Application: print a structured

document

Become Rich

1. Motivations 2. Methods 3. Success Stories

2.1 Get a CS

PhD 2.2 Web Site Start a

1.1 Enjoy

Life Poor Friends1.2 Help 2.3 by GoogleAcquired

1

2

3

5

4 6 7 8

9

Algorithm preOrder(v) visit(v)

(14)

POSTORDER TRAVERSAL

 In a postorder traversal, a node is

visited after its descendants

 Application: compute space used

by files in a directory and its subdirectories

Algorithm postOrder(v)

for each child w of v postOrder (w)

visit(v)

cs16/

homeworks/ programs/ todo.txt1K

DDR.java

10K Stocks.java25K h1c.doc

3K h1nc.doc2K Robot.java20K

9

3

1

7

2 4 5 6

8

DDR.java

10K Stocks.java25K h1c.doc

(15)

BINARY TREE

 A binary tree is a tree with the

following properties:

 Each internal node has at most two

children (degree of two)

 The children of a node are an ordered

pair

 We call the children of an internal

node left child and right child

 Alternative recursive definition: a

binary tree is either

 a tree consisting of a single node, OR  a tree whose root has an ordered pair

(16)

BINARYTREE ADT

 The BinaryTree ADT

extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT

 Additional methods:

 position leftChild(p)  position rightChild(p)  position sibling(p)

 Update methods may be

defined by data structures implementing the

(17)

Examples of the Binary Tree

A B C G E I D H F

Complete Binary Tree

1 2 3 4 A B A B

Skewed Binary Tree

E

C

D

(18)

DIFFERENCES BETWEEN A TREE AND A BINARY TREE

 The subtrees of a binary tree are ordered; those of a tree are not ordered.

• Are different when viewed as binary trees. • Are the same when viewed as trees.

A

B

A

(19)

DATA STRUCTURE FOR BINARY TREES

 A node is represented

by an object storing

 Element  Parent node  Left child node  Right child node

B

D A

C E

 

   

B

A D

C E

(20)

ARITHMETIC EXPRESSION TREE

 Binary tree associated with an arithmetic expression

 internal nodes: operators  external nodes: operands

 Example: arithmetic expression tree for the expression (2

(a - 1) + (3  b))

+

 

-2

a 1

(21)

DECISION TREE

 Binary tree associated with a decision process

 internal nodes: questions with yes/no answer  external nodes: decisions

 Example: dining decision

Want a fast meal?

How about coffee? On expense account?

Starbucks Spike’s Al Forno Café Paragon

Yes No

(22)

Maximum Number of Nodes in a

Binary Tree

The maximum number of nodes on depth i of a binary tree is 2i, i>=0.

The maximum nubmer of nodes in a binary tree of height k is 2k+1-1,

k>=0.

Prove by induction.

1 2

2 1

0

 

k

k

i

(23)

FULL BINARY TREE

 A full binary tree of a given height k has 2k+1–1 nodes.

(24)

LABELING NODES IN A FULL BINARY

TREE

 Label the nodes 1 through 2k+1 – 1.  Label by levels from top to bottom.

 Within a level, label from left to right.

1

2 3

4 5 6 7

(25)

NODE NUMBER PROPERTIES

 Parent of node i is node i / 2, unless i = 1.  Node 1 is the root and has no parent.

1

2 3

4 5 6 7

(26)

NODE NUMBER PROPERTIES

 Left child of node i is node 2i, unless 2i > n, where n is

the number of nodes.

 If 2i > n, node i has no left child.

1

2 3

4 5 6 7

(27)

NODE NUMBER PROPERTIES

 Right child of node i is node 2i+1, unless 2i+1 > n,

where n is the number of nodes.

 If 2i+1 > n, node i has no right child.

1

2 3

4 5 6 7

(28)

Complete Binary Trees

A labeled binary tree containing the labels 1 to n with root 1, branches leading to nodes labeled 2 and 3, branches from these leading to 4, 5 and 6, 7, respectively, and so on.

A binary tree with n nodes and level k is complete iff its nodes

correspond to the nodes numbered from 1 to n in the full binary tree of level k.

1 2 3 7 5 11 4 10 6 9

8 12 13 14 15

Full binary tree of depth 3

1 2 3 7 5 9 4 8 6

(29)

Binary Tree Traversals

Let l, R, and r stand for moving left, visiting the node, and moving right.

There are six possible combinations of traversal

lRr, lrR, Rlr, Rrl, rRl, rlR

Adopt convention that we traverse left before right, only 3 traversals remain

lRr, lrR, Rlr

(30)

INORDER TRAVERSAL

 In an inorder traversal a node

is visited after its left subtree and before its right subtree

Algorithm inOrder(v)

if isInternal (v)

inOrder (leftChild (v)) visit(v)

if isInternal (v)

inOrder (rightChild (v))

3 1

2

5 6

7 9

8

(31)

PRINT ARITHMETIC EXPRESSIONS

 Specialization of an inorder traversal

 print operand or operator when

visiting node

 print “(“ before traversing left

subtree

 print “)“ after traversing right

subtree

Algorithm inOrder (v) if isInternal (v){

print(“(’’)

inOrder (leftChild

(v))}

print(v.element ())

if isInternal (v){

inOrder (rightChild

(v))

print (“)’’)}

+   -2 a 1

(32)

EVALUATE ARITHMETIC EXPRESSIONS

 recursive method returning

the value of a subtree

 when visiting an internal

node, combine the values of the subtrees

Algorithm evalExpr(v) if isExternal (v)

return v.element ()

else

x  evalExpr(leftChild

(v))

y  evalExpr(rightChild

(v))

  operator stored at

v

return x  y

(33)

CREATIVITY:

PATHLENGTH(TREE) =  DEPTH(V) V 

TREE

Algorithm pathLength(v, n)

Input: a tree node v and an initial value n

Output: the pathLength of the tree with root v

Usage: pl = pathLength(root, 0);

if isExternal (v) return n

return

(pathLength(leftChild (v), n + 1) +

(34)

EULER TOUR TRAVERSAL

 Generic traversal of a binary tree

 Includes a special cases the preorder, postorder and inorder traversals  Walk around the tree and visit each node three times:

 on the left (preorder)  from below (inorder)  on the right (postorder)

+

-2

5 1

3 2

L B

(35)

EULER TOUR TRAVERSAL

eulerTour(node v) {

perform action for visiting node on the left; if v is internal then

eulerTour(v->left);

perform action for visiting node from below; if v is internal then

eulerTour(v->right);

(36)
(37)

BINARY TREE

 sebuah pengorganisasian secara hirarki

dari beberapa buah simpul, dimana

masing-masing simpul tidak mempunyai anak lebih dari 2.

 Simpul yang berada di bawah sebuah

simpul dinamakan anak dari simpul tersebut.

 Simpul yang berada di atas sebuah

(38)
(39)

ISTILAH DALAM TREE

Term Definition

Node Sebuah elemen dalam sebuah tree; berisi sebuah informasi

Parent Node yang berada di atas node lain secara langsung; B adalah parent dari D dan E

Child Cabang langsung dari sebuah node; D dan E merupakan children dari B

Root Node teratas yang tidak punya parent

Sibling Sebuah node lain yang memiliki parent yang sama; Sibling dari B adalah C karena memiliki parent yang sama yaitu A

Leaf Sebuah node yang tidak memiliki children. D, E, F, G, I adalah leaf. Leaf biasa disebut sebagai external node, sedangkan node selainnya disebut sebagai internal node. B, A, C, H adalah

internal node

Level Semua node yang memiliki jarak yang sama dari root. Alevel 0; B,Clevel 1; D,E,F,G,Hlevel 2; Ilevel 3

Depth Jumlah level yang ada dalam tree

Complete Semua parent memiliki children yang penuh

(40)

STRUKTUR BINARY TREE

 Masing-masing simpul dalam binary tree

terdiri dari tiga bagian yaitu sebuah data dan dua buah pointer yang dinamakan

(41)

DEKLARASI TREE

typedef char typeInfo;

typedef struct Node tree; struct Node {

typeInfo info;

tree *kiri; /* cabang kiri */

(42)

PEMBENTUKAN TREE

 Dapat dilakukan dengan dua cara :

rekursif dan non rekursif

 Perlu memperhatikan kapan suatu node

akan dipasang sebagai node kiri dan kapan sebagai node kanan.

 Misalnya ditentukan, node yang berisi

info yang nilainya “lebih besar” dari parent akan ditempatkan di sebelah

kanan dan yang “lebih kecil” di sebelah kiri.

 Sebagai contoh jika kita memiliki

(43)
(44)

PEMBENTUKAN TREE

Langkah-langkah Pembentukan Binary Tree 1. Siapkan node baru

- alokasikan memory-nya - masukkan info-nya

- set pointer kiri & kanan = NULL 2. Sisipkan pada posisi yang tepat

- penelusuran  utk menentukan posisi yang tepat;

info yang nilainya lebih besar dari parent akan ditelusuri di sebelah kanan, yang lebih kecil dari parent akan ditelusuri di sebelah kiri

- penempatan  info yang nilainya lebih dari parent

(45)

METODE TRAVERSAL

 Salah satu operasi yang paling umum dilakukan

terhadap sebuah tree adalah kunjungan (traversing)

 Sebuah kunjungan berawal dari root, mengunjungi

setiap node dalam tree tersebut tepat hanya sekali

 Mengunjungi artinya memproses data/info yang ada pada

node ybs

 Kunjungan bisa dilakukan dengan 3 cara:

1. Preorder 2. Inorder 3. Postorder

 Ketiga macam kunjungan tersebut bisa dilakukan

(46)

PREORDER

 Kunjungan preorder, juga disebut dengan depth

first order, menggunakan urutan:

Cetak isi simpul yang dikunjungi Kunjungi cabang kiri

(47)

PREORDER

void preorder(pohon ph) {

if (ph != NULL) {

printf("%c ", ph->info); preorder(ph->kiri);

preorder(ph->kanan); }

(48)

PREORDER

A

B C

D E F G

(49)

INORDER

 Kunjungan secara inorder, juga sering disebut

dengan symmetric order, menggunakan urutan:

 Kunjungi cabang kiri

(50)

INORDER

void inorder(pohon ph) {

if (ph != NULL) {

inorder(ph->kiri);

printf("%c ", ph->info); inorder(ph->kanan); }

(51)

INORDER

A

B C

D E F G

(52)

POSTORDER

 Kunjungan secara postorder menggunakan

urutan:

 Kunjungi cabang kiri  Kunjungi cabang kanan

(53)

POSTORDER

void postorder(pohon ph) {

if (ph != NULL) {

postorder(ph->kiri);

postorder(ph->kanan); printf("%c ", ph->info); }

(54)

POSTORDER

A

B C

D E F G

(55)

REFERENCES

 http://www.cse.unt.edu/~huangyan/3110/

Referensi

Dokumen terkait

HTML adalah singkatan dari Hyper Text Markup Language , HTML tidak tergolong kedalam sebuah bahasa pemrograman, HTML lebih dikenal sebagai bahasa markup yang terdiri

--- --Ketua apabila berhalangan maka wakil-wakilnya yang diberikan dengan suatu surat kuasa khusus untuk bertindak mewakili FCE ini dalam segala hal dan segala

Sebuah digraph D dan 2-digraph D dengan n vertex dapat dinyatakan oleh matriks, yang entri dari matriks tersebut adalah bilangan 1 atau 0, matriks yang demikian disebut sebagai

Studi kelayakan yang dimaksud dalam penelitian ini adalah studi kelayakan penggunaan mesin diesel pada PLTD Ampenan dengan metode Break Even Point dan

Tulisan ini akan menguraikan beberapa hal yang berkenaan dengan karaginan, yaitu jenis rumput laut penghasil karaginan, proses pengolahan karaginan, struktur karaginan, sifat-

Menurut Daryanto (2014:70), kegiatan menalar yaitu proses berfikir yang logis dan sistematis atas fakta- fakta empiris yang dapat diobservasi untuk memperoleh simpulan

Pembelajaran matematika di sekolah bertujuan agar peserta didik memahami konsep matematika, menggunakan penalaran, memecahkan masalah, mengkomunikasikan gagasan, serta

Baja amutit ukuran penampang 17 mm x 17 mm dengan panjang ± 120 mm dibentuk menggunakan mesin potong, mesin milling dan mesin surface grinding menjadi menjadi balok