มาดู มาดู่

 

ทฤษฎีและโครงงานที่เกี่ยวข้อง

 

โปรแกรมช่วยการศึกษาโครงสร้างต้นไม้AVL นี้ ผู้จัดทำได้ทำการศึกษาทฤษฎีและหลักการต่างๆ ที่เกี่ยวกับโครงงาน ได้แก่ ทฤษฎีของต้นไม้ค้นหาแบบทวิภาค ทฤษฎีของต้นไม้ AVL  ซึ่งทั้งสองเป็นโครงสร้างต้นไม้แบบทวิภาค  โดยโครงงานนี้ใช้ภาษาจาวาในการพัฒนาโครงงานให้มีลักษณะเป็นภาพเคลื่อนไหว โดยรายละเอียดทฤษฎีต่าง ๆ จะกล่าวเป็นลำดับต่อไป

ต้นไม้ (Tree)

ต้นไม้ประกอบด้วยสมาชิกที่เรียกว่าบัพ (node) และเส้นตรง(edge) ที่เชื่อมบัพในต้นไม้ ต้นไม้ที่ไม่มีบัพจะเรียกว่าต้นไม้ว่าง (empty tree) ส่วนต้นไม้ที่ไม่ว่าง บัพแรกในโครงสร้างต้นไม้จะเรียกว่า บัพรากของต้นไม้ (root tree) สำหรับบัพอื่นๆ ที่ไม่ใช่บัพรากจะแบ่งเป็นกลุ่ม ๆ โดยแต่ละกลุ่มไม่มีบัพร่วมกันเลย ซึ่งแต่ละกลุ่มก็เป็นต้นไม้เหมือนกัน เรียกว่า ต้นไม้ย่อย (Subtree) T1, T2,….Tn (n ³ 0)

 

 

โครงสร้างต้นไม้ AVL  (AVL Tree)

ต้นไม้ AVL เป็นต้นไม้ค้นหาแบบทวิภาคชนิดพิเศษ นั่นคือมีคุณสมบัติพื้นฐานเหมือนกับต้นไม้ค้นหาแบบทวิภาค  แต่คุณสมบัติที่เพิ่มเข้ามาและทำให้ต้นไม้ AVL แตกต่างจาก ต้นไม้ค้นหาแบบทวิภาคคือความสูงของต้นไม้ย่อยทางซ้ายและความสูงของต้นไม้ย่อยทางขวาของแต่ละบัพ จะต้องมีค่าความสูงต่างกันไม่เกิน 1 เสมอ

                แสดงได้                | HL – HR  |  £1

เมื่อ          HL  คือความสูงของต้นไม้ย่อยทางซ้าย

                                 HR  คือความสูงของต้นไม้ย่อยทางขวา

ดังนั้นค่าความแตกต่างของความสูงของต้นไม้ย่อยทางซ้ายกับต้นไม้ย่อยทางขวาที่ทำให้สมการเป็นจริงคือ 1 , 0 หรือ –1 เท่านั้น

                เมื่อเราพิจารณาตัวอย่างของโครงสร้างต้นไม้ 2 รูป ในรูปที่ 2-4 เป็นรูปต้นไม้ทวิภาคสองต้น โดยทั้งสองต้นไม้มีข้อมูลเหมือนกัน

 

 

โครงสร้างต้นไม้ทวิภาค (Binary tree)

                คือต้นไม้ที่แต่ละบัพไม่สามารถมีต้นไม้ย่อยได้มากกว่า 2 หรือกล่าวอีกนัยหนึ่งคือ บัพแต่ละบัพสามารถมีบัพลูกได้ 0, 1 หรือ 2 เท่านั้น โดยบัพลูกทางซ้ายจะเรียกว่าต้นไม้ย่อยทางซ้ายและบัพลูกทางขวาจะเรียกว่าต้นไม้ย่อยทางขวา

ถ้าหากต้นไม้ทวิภาคใดมีบัพในต้นไม้ย่อยทางซ้ายเท่ากับบัพในต้นไม้ย่อยทางขวาเราจะเรียกต้นไม้ทวิภาคนี้ว่า ต้นไม้ทวิภาคสมบูรณ์ (Complete binary tree)