งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร"— ใบสำเนางานนำเสนอ:

1 ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong

2 หัวข้อวันนี้ โครงสร้างทั่วไปของต้นไม้ (Introduction)
การเรียกชื่อส่วนต่างๆ ของต้นไม้ (terminology) ต้นไม้แบบทวิภาค (binary tree) คุณลักษณะของต้นไม้แบบทวิภาค การแทนต้นไม้แบบทวิภาคในคอมพิวเตอร์

3 root node branch ลักษณะของโครงสร้างข้อมูลแบบต้นไม้

4 โครงสร้างทั่วไปของต้นไม้
เป็น โครงสร้างข้อมูลแบบไม่เป็นรายการเชิงเส้น (Non-Linear Data Structure) ลักษณะคล้ายกิ่งก้านของต้นไม้ (แต่กลับหัว) ประกอบด้วยจุดยอดของต้นไม้เรียกว่า ราก (Root) จุดที่มีการแตกกิ่งก้านสาขาออกไปเรียกว่า โหนด (Node) กิ่งก้านสาขาที่เชื่อมต่อระหว่างโหนดเรียกว่า กิ่ง (Branch) หรือ ลิงค์ (Link) ส่วนย่อยของต้นไม้ ก็เป็นต้นไม้ (subtree) ทุกโหนดเป็น root ของ subtree ของตัวมันเอง

5 R เป็น root ของ subtree A,B,C,D
A เป็น root ของ subtree E,F,G F เป็น root ของ subtree J C เป็น subtree ที่มีแต่ root C

6 การเรียกชื่อส่วนต่างๆ ของต้นไม้
ต้นไม้ (tree) ประกอบด้วย 1.node ส่วนเก็บข้อมูล 2.branch ใช้เชื่อม node เข้าด้วยกัน A B C node A, B, C branch AB, AC

7 A B C root A โหนดอื่นๆ B , C node A มี degree เท่ากับ 2
root หมายถึง node แรกของ tree A B C root A โหนดอื่นๆ B , C Degree หมายถึง จำนวน subtree ที่สัมพันธ์กับ Node นั้นๆ node A มี degree เท่ากับ 2 node B มี degree เท่ากับ 0 node C มี degree เท่ากับ 0

8 A B C D E root A leaf D , E , C branch node B
leaf หมายถึง node ที่มีดีกรีเท่ากับ 0 A B C D E root A leaf D , E , C internal node , branch node หมายถึง node ที่ไม่ใช่ root และ leaf branch node B

9 parent หมายถึง node ที่มีดีกรีมากกว่า 0 (node ที่มี subtree )
C D E parent A , B child หมายถึง node ที่เป็น subtree ของ tree อื่น child B , C , D , E

10 A B C D E level 0 level 1 level 2 depth = 2 + 1 = 3
level หมายถึงระยะทางจาก root จนถึง node นั้นๆ level 0 A B C D E level 1 level 2 height หรือ depth ของ tree หมายถึง level สูงสุด ของ leaf บวกด้วย 1 depth = = 3

11 A B C D F E sibling ของ B คือ C sibling ของ D คือ E และ F
sibling หมายถึงโหนดที่มี parent ร่วมกัน A B C D F E sibling ของ B คือ C sibling ของ D คือ E และ F

12 parents children leaves internal nodes depth degree(A) degree(B) degree(H) degree(C) degree(E) A, B, F 3 B, E, F, C, D, G, H, I 2 E, C, D, G, H, I B, F 3

13 A B C D E F G H J K L I M N O Exercise 1 - node ที่เป็น child
- node ที่เป็น parent - node ที่เป็น child - level ของ tree - height ของ tree - degree ของแต่ละโหนด - parent ของแต่ละโหนด - children ของแต่ละโหนด - sibling ของแต่ละโหนด B C D E F G H J K L I M N O 1.จาก tree ต่อไปนี้ จงหา - node ที่เป็น root - node ที่เป็น leaf - node ที่เป็น internal node

14 ต้นไม้แบบทวิภาค (binary tree)
หมายถึง tree ที่แต่ละ node มีจำนวน subtree <= 2 ( แต่ละ node มี degree <= 2 )

15 Empty หรือ Null Tree

16 คุณลักษณะของต้นไม้แบบทวิภาค
ความสัมพันธ์ระหว่างความสูง (hight) และจำนวน node ใน binary tree กำหนดให้ h เป็นความสูงของ binary tree n เป็นจำนวน node ใน binary tree ถ้าเรารู้ความสูง (h) ต้องสามารถหาจำนวน node (n) มากที่สุดและน้อยที่สุดที่เป็นไปได้ของ binary tree นั้นได้ ถ้าเรารู้จำนวน node (n) ต้องสามารถหาความสูง (h) มากที่สุดและน้อยที่สุดที่เป็นไปได้ของ binary tree นั้นได้

17 A B C D E F G A B D nmax = 7 nmin = 3 จะได้ว่า nmax = 2h – 1 nmin = h
ถ้าเรารู้ความสูงของ binary tree = 3 A B C D E F G A B D nmax = 7 nmin = 3 จะได้ว่า nmax = 2h – 1 nmin = h

18 A B C D E A B C D E hmin = 3 hmax = 5 จะได้ว่า hmin = log2n + 1
ถ้าเรารู้ความจำนวน node ของ binary tree = 5 A B C D E A B C D E hmin = 3 hmax = 5 จะได้ว่า hmin = log2n + 1 hmax = n

19 การแทนต้นไม้แบบทวิภาคในคอมพิวเตอร์
binary tree สามารถแทนในคอมพิวเตอร์ได้ 2 แบบ คือ การแทนโดยอาศัยอาร์เรย์ ใช้อาร์เรย์ 3 อาร์เรย์ในการจัดเก็บ ใช้อาร์เรย์ 1 มิติอาร์เรย์เดียวในการจัดเก็บ การแทนโดยอาศัย pointer

20 การแทนโดยใช้อาร์เรย์ 3 อาร์เรย์ในการจัดเก็บ
จะใช้อาร์เรย์ที่มีขนาดเท่ากันจำนวน 3 ชุด คือ data – เก็บข้อมูลในแต่ละ node left – เก็บตำแหน่งของ node ลูกทางด้านซ้ายมือ right – เก็บตำแหน่งของ node ลูกทางด้านขวามือ ถ้า node ใดไม่มี node ลูก ให้เก็บค่า -1 (แทน NULL) และใช้ตัวแปร root เก็บตำแหน่งของ node แรกใน tree

21 A B C D E F G H ตัวอย่าง ข้อมูลในหน่วยความจำ general binary tree root
data left right A 1 1 A 2 3 2 B 6 4 B C 3 C 7 -1 4 E 8 5 5 H -1 -1 D E F 6 D -1 -1 7 F -1 -1 G H 8 G -1 -1

22 การแทนโดยใช้อาร์เรย์ 1 มิติอาร์เรย์เดียวในการจัดเก็บ
กำหนดตำแหน่งช่องในอาร์เรย์ให้แต่ละ node โดย เริ่มตั้งแต่ level 0 , 1 , … , k ตามลำดับ แต่ละ level จะเริ่มจาก node ทางด้านซ้ายสุดไปถึงโหนดทางขวาสุด ตามลำดับ ลักษณะเป็นการนนับช่องจากบนลงล่าง, ซ้ายไปขวา การกำหนดตำแหน่งเช่นนี้จะไม่สนใจว่ามีข้อมูลของโหนดนั้นจริงหรือไม่ (Fix ตำแหน่งอาร์เรย์ไว้)

23 A B C D E G F H I ตัวอย่าง general binary tree 1 2 3 4 5 6 7 8 9 10 11
12 13 14 15 ข้อมูลในหน่วยความจำ A B C D E - F G H I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

24 จะได้ความสัมพันธ์ระหว่าง tree และ อาร์เรย์ ดังนี้
ถ้า binary tree มีความสูงเท่ากับ h จะต้องใช้อาร์เรย์ที่มีขนาด 2h – 1 ในการจัดเก็บ parent ของโหนด i ใดๆ จะอยู่ที่ตำแหน่ง i/2 ถ้า i ไม่เท่ากับ 1 left child ของโหนด i ใดๆ จะอยู่ที่ตำแหน่ง 2i right child ของโหนด i ใดๆ จะอยู่ที่ตำแหน่ง 2i + 1

25 การแทนโดยอาศัย pointer
เป็นวิธีการจัดเก็บที่มีประสิทธิภาพ เนื่องจากไม่เกิดปัญหาการจองข้อมูลมากหรือน้อยเกินไป โดยข้อมูลแต่ละ node ของ tree จะประกอบไปด้วย data – เก็บข้อมูลในแต่ละ node Lptr – เก็บ address ของ node ลูกทางด้านซ้ายมือ Rptr – เก็บ address ของ node ลูกทางด้านขวามือ

26 ตัวอย่าง


ดาวน์โหลด ppt ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

งานนำเสนอที่คล้ายกัน


Ads by Google