การดำเนินการในต้นไม้ค้นหาแบบทวิภาค

การดำเนินการในต้นไม้ค้นหาแบบทวิภาค

2.3.1.1 การเพิ่มข้อมูล (Insertion)

                เนื่องจากทุกครั้งที่มีการเพิ่มข้อมูลเข้ามาต้องค้นหาในต้นไม้ก่อนว่าข้อมูลที่เข้ามาควรจะเพิ่มต่อจากบัพใบบัพใด โดยเริ่มค้นหาจากบัพรากของโครงสร้างต้นไม้  แล้วค้นหาต่อไปขึ้นอยู่กับค่าของข้อมูลที่เข้ามา ซึ่งการเพิ่มข้อมูลมีหลักการดังนี้

1.             ถ้าโครงสร้างต้นไม้เป็นต้นไม้ว่าง ก็สามารถแทรกข้อมูลใหม่ลงได้ทันที โดยทำการสร้างบัพใหม่แล้วใส่ค่าข้อมูลลงไป

2.             ถ้าโครงสร้างต้นไม้เป็นโครงสร้างต้นไม้ที่ไม่ว่าง ก็ทำการเปรียบเทียบค่ากับบัพราก ถ้าค่าที่ต้องการเพิ่มมีค่าน้อยกว่าบัพราก ก็ไปค้นหาในต้นไม้ย่อยทางซ้าย

3.             ถ้าโครงสร้างต้นไม้เป็นโครงสร้างต้นไม้ที่ไม่ว่างก็ทำการเปรียบเทียบค่ากับบัพราก ถ้า ค่าที่ต้องการเพิ่มมีค่ามากกว่าหรือเท่ากับบัพราก ก็ไปค้นหาต่อในต้นไม้ย่อยทางขวา

                ซึ่งการทำงานของการเพิ่มข้อมูลจะเป็นไปในลักษณะเรียกตัวเองซ้ำ (Recursive) จนถึงบัพใบและทำการเพิ่มข้อมูลใหม่เข้าต่อจากบัพใบนั้น

2.3.1.2 การลบข้อมูล (Deletion)                        

                การลบข้อมูลเหมือนกับการเพิ่มข้อมูลในต้นไม้ค้นหาแบบทวิภาค คือเมื่อลบข้อมูลออกแล้วต้องยังคงทำให้ต้นไม้มีคุณสมบัติเป็นต้นไม้ค้นหาแบบทวิภาคเช่นเดิม เพียงแต่การลบข้อมูลทำได้ไม่ง่ายเหมือนการเพิ่มข้อมูล ซึ่งการลบข้อมูลออกจากโครงสร้างต้นไม้ค้นหาแบบทวิภาคนั้นมี 3 กรณีที่ต้องพิจารณา คือ

1.             ถ้าบัพที่ต้องการลบเป็นบัพที่ไม่มีลูกหรือบัพใบ ให้ทำการลบออกได้ทันที

2.             ถ้าบัพที่ต้องการลบเป็นบัพที่มีแต่บัพลูกทางซ้ายหรือบัพลูกทางขวา ให้นำบัพลูกนั้นมาแทนที่แล้วทำการลบบัพที่ต้องการออกได้เลย

1.             ถ้าบัพที่ต้องการลบมีทั้งบัพลูกทางซ้ายและบัพลูกทางขวา ซึ่งกรณีนี้เป็นไปได้ที่จะทำการลบบัพตรงกลางของโครงสร้างต้นไม้ ซึ่งการลบบัพในโครงสร้างต้นไม้ลักษณะนี้นั้น มักจะทำให้โครงสร้างต้นไม้เสียสมดุล ดังนั้นการลบบัพเราจำเป็นต้องรักษาคุณสมบัติของโครงสร้างต้นไม้ไม่ให้เสียไปด้วย โดยการหาข้อมูลมาแทนที่บัพที่ต้องการลบ ซึ่งสามารถทำได้ 2 วิธี คือ

-         หาบัพที่มีค่ามากที่สุดในต้นไม้ย่อยทางซ้ายของบัพที่ต้องการลบและย้ายบัพนั้นไปแทนที่บัพที่ต้องการลบ

-         หรือหาบัพที่มีค่าน้อยที่สุดในต้นไม้ย่อยทางขวาของบัพที่ต้องการลบและย้ายบัพนั้นไปแทนที่บัพที่ต้องการลบ

ซึ่ง 2 วิธีที่กล่าวมานี้จะช่วยรักษาคุณสมบัติของต้นไม้ค้นหาแบบทวิภาคหลังจากการลบบัพ

ออกจากต้นไม้ไว้ได้