เป็น AVL กับต้นไม้เติมค่าของแล้วเปรียบเทียบทั้งคู่

0

คำถาม

ฉันต้องการจะสร้างข้อมูลของโครงสร้างของ(โดยใช้ส่วนใหญ่เป็น AVL ต้นไม้)ของวัตถุกับสองค่า:ระดับ(ไม่ใช่ยูนิค)และหมายเลข(คือยูนิค).

ฉันต้องการที่จะสนับสนุนการค้นโดยบัตรการพิมพ์โดยคำสั่งของระดับเช่นเดียว merging สองคนนั้นต้นไม้แล้วก็รักษาพวกนี้ functionalities ใหม่ของต้นไม้

ฉันมีหลายวิธีแก้ปัญหาต่างๆที่อยู่ในใจแต่ฉันอยากจะถามเรื่องเฉพาะเรื่องที่หนึ่ง:

มันจะทำงานให้รับคำสั่งเข้าใจเรื่องโครงสร้างกับ singular AVL ต้นไม้ที่สองโหนดต่างๆเป็นคนแรกเมื่อเทียบกับข้อกระดับและพวกเขาก็น่าจะเป็นบัตรประจำตั? ส่วนใหญ่พ่อต้องการต่อสู้ต้องรู้ว่า merging สองคนนั้นต้นไม้ได้ทำงานโดยเฉพาะอย่างยิ่งในคดีที่เรามีต้นไม้เป็นที่วัตถุทั้งหมดเป็นของระดับบแกน x และต้นไม้บีที่ไหนวัตถุทั้งหมดเป็นของระดับน่อย

แก้ไข:ยังสำหรับค้นหาชื่อที่เพิ่มมานอกเหนือจากจะมีต้นไม้เดียวที่จัดเรียงเรียบร้อยโดยบัตรประจำตัวครรับ

มันสามารถวิธีการทำงาน?

algorithm avl-tree data-structures
2021-11-23 19:10:15
1

คำตอบที่ดีที่สุด

2

singular AVL ต้นไม้ที่สองโหนดต่างๆเป็นคนแรกเมื่อเทียบกับข้อกระดับและพวกเขาก็น่าจะเป็นบัตรประจำตั?

น่าเสียดายที่ไม่ ถ้าคุณทำอย่างนั้นคุณจะไม่สามารถ efficiently เจอเป็นโหนดโดยมันหมายเลข--คุณต้องการจะมองผ่านทั้งหมดเท่าที่ทำได้'แนวระดับของซึ่งคุณไม่ได้กำหนดนั้นฉันจะสันนิษฐานว่าพวกเขาสามารถเป็น unbounded.

ฉันคิดว่าคุณอาจจะต้องการจะแทรกกันโหนดไปสองคนแยกออก AVL ต้นไม้แทน หนึ่ง AVL ต้นไม้จะสั่งโหนดต่างๆโดยระดับอีกคนโดยพวกบัตรประจำตัวครรับ ทุกค้นข้อมูล,insertions,deletions และ merges ต้องทำในแต่ละต้นไม้ไว้แยกต่างหาก

หรือจะพูดอีกอย่างคุณจะสร้างสองคน indexes บข้อมูลของคุณ.

รหัส:

struct Node {
    int id;
    int level;

    // by id
    int id_bf;
    Node *id_left, *id_right;

    // by level
    int level_bf;
    Node *level_left, *level_right;
};

แก้ไข:ยังสำหรับค้นหาชื่อที่เพิ่มมานอกเหนือจากจะมีต้นไม้เดียวที่จัดเรียงเรียบร้อยโดยบัตรประจำตัวครรับ

งั้นคุณโดยพื้นฐานอธิบายแบบเดียวกันออกมาเหมือนฉัน ยังไงก็ตาของต้นไม้นั่นคือจัดเรียงเรียบร้อยโดยงดูองค์ประกอบ (level, id) กุญแจคือ wasteful;ทั้งหมดที่คุณต้องการคือต้นไม้เรียงลำดับแบบ (level) และต้นไม้เรียงลำดับแบบ (id) (scalar กุญแจ). ไม่ต้องการอยู่ท่ามกลางคนที่ปฏิบัติการเตรียมไว้ให้คุณเพื่อเรียงลำดับตาม@title:menu (level, id) แล้ว (id).

2021-11-23 19:29:44

ขอบคุณสำหรับตอบกลับไปยังผู้รับจดหน่าเสียดายที่ผมลืมพูดถึงเรื่องนั้นยิ่งไปกว่านั้นฉันก็จะมีต้นไม้จัดเรียงเรียบร้อยโดยบัตรเพื่อสิ่งนี้ functionality. ฉันคิดว่าคุณแก้ปัญหาฉันแค่สงสัยเกี่ยวกับลักษณะเฉพาะทางออกเป็นเพื่อนร่วมห้องบอกฉันซึ่งฉันคิดว่าจะไม่ทำงานเพราะ merging,
user3917631

@user3917631:ต้นไม้จัดเรียงเรียบร้อยโดย(ระดับบัตรประชาชน)จะเป็นยังจัดเรียงเรียบร้อยโดย(ระดับ). ดังนั้นถ้าคุณต้องต้นไม้จัดเรียงเรียบร้อยโดย(id)ที่เพิ่มมานอกเหนือจากเหมือนกันพวกคุณจะสามารถทำการปฎิบัติการ efficiently เหมือนฉันอธิบายมา มันคือนิดหน่อ wasteful ต้องเรียงลำดับตาม@title:menu(ระดับหมายเลข)ถ้าทั้งหมดที่คุณต้องการคือ(ระดับ).
Yakov Galka

ฉันรู้ฉันแค่กำลังออกจากผลประโยชน์มันทำงาน? มันเป็นไปได้ที่จะมีสองต้นไม้จัดเรียงเรียบร้อยโดย(ระดับหมายเลข)ทั้งสอง integers และผนวกรวมพวกเขาอยู่ในโอ(n)(n จำนวนของโหนดต่างๆด้วยการผสมผสาน).
user3917631

@user3917631 ใช่มันเป็นไปได้และไม่ได้แตกต่างจาก merging สองต้นไม้จัดเรียงเรียบร้อยโดยสิ่งอื่นใด ไบนารี(ภาษาเครื่อง)การค้นหาต้นไม้เป็นเปรียบเทียบกับฐานดังนั้นพวกเขาไม่'สน'สิ่งที่คุณกำลังใช้สำหรับกุญแจของคุณตราบเท่าที่มันเป็ นคนสั่งให้ตั้งค่า. เป็น tuple ของ integers เป็นต้องเรียบร้อย วิกิพีเดียบทความเกี่ยวกับ AVL ต้นไม้ทั้งต้องทำอย่างมีประสิทธิภาพเพียงพอ smooth scrolling ผนวกรวม; นั่นมันเรียกว่ายูเนี่ยน. แต่คุณอาจจะต้องการจะจัดเก็บโหนดความสูงแทนที่จะเป็นความสมดุลของชีต้องทำอย่างนั้น
Yakov Galka

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่