นี่เป็นคำถามง่าย ๆ จากทฤษฎีอัลกอริทึม
ความแตกต่างระหว่างสิ่งเหล่านี้คือในกรณีหนึ่งคุณจะนับจำนวนโหนดและจำนวนขอบอื่น ๆ บนเส้นทางที่สั้นที่สุดระหว่างรูทและโหนดคอนกรีต
อันไหน
นี่เป็นคำถามง่าย ๆ จากทฤษฎีอัลกอริทึม
ความแตกต่างระหว่างสิ่งเหล่านี้คือในกรณีหนึ่งคุณจะนับจำนวนโหนดและจำนวนขอบอื่น ๆ บนเส้นทางที่สั้นที่สุดระหว่างรูทและโหนดคอนกรีต
อันไหน
คำตอบ:
ฉันเรียนรู้ว่าความลึกและความสูงเป็นคุณสมบัติของโหนด :
ความลึกของโหนดเป็นจำนวนขอบจากโหนดไปยังโหนดรากของต้นไม้ที่
โหนดรูทจะมีความลึกเป็น 0
ความสูงของโหนดเป็นจำนวนขอบบนที่เส้นทางที่ยาวที่สุดจากโหนดที่ใบ
โหนดลีฟจะมีความสูงเป็น 0
คุณสมบัติของต้นไม้ :
ความสูงของต้นไม้จะเป็นความสูงของโหนดรากของมัน
หรือเท่ากันความลึกของโหนดที่ลึกที่สุดของมัน
เส้นผ่าศูนย์กลาง (หรือความกว้าง ) ของต้นไม้เป็นจำนวนของโหนดบนเส้นทางที่ยาวที่สุดระหว่างสองโหนดใบ ต้นไม้ด้านล่างมีเส้นผ่าศูนย์กลาง 6 โหนด
ความสูงและความลึกของต้นไม้เท่ากับ ...
แต่ความสูงและความลึกของโหนดไม่เท่ากันเพราะ ...
ความสูงถูกคำนวณโดยการข้ามจากโหนดที่กำหนดไปยังใบไม้ที่เป็นไปได้ที่ลึกที่สุด
ความลึกถูกคำนวณจากการแวะผ่านจากรูทไปยังโหนดที่กำหนด .....
ตาม Cormen et al. รู้เบื้องต้นเกี่ยวกับอัลกอริทึม (ภาคผนวก B.5.3) ความลึกของโหนด X ในทรี T ถูกกำหนดเป็นความยาวของพา ธ แบบง่าย (จำนวนขอบ) จากรูตโหนดของ T ถึง X ความสูงของโหนด Y คือ จำนวนของขอบบนเส้นทางที่เรียบง่ายที่ยาวที่สุดลงจาก Y ถึงใบไม้ ความสูงของต้นไม้ถูกกำหนดให้เป็นความสูงของโหนดรูต
โปรดทราบว่าเส้นทางแบบง่ายคือเส้นทางที่ไม่มีจุดยอดซ้ำ
ความสูงของต้นไม้มีค่าเท่ากับความลึกสูงสุดของต้นไม้ ความลึกของโหนดและความสูงของโหนดไม่จำเป็นต้องเท่ากัน ดูรูป B.6 ของรุ่นที่ 3 ของ Cormen และคณะ สำหรับภาพประกอบของแนวคิดเหล่านี้
บางครั้งฉันเห็นปัญหาที่ขอให้นับโหนด (จุดยอด) แทนขอบดังนั้นขอคำชี้แจงหากคุณไม่แน่ใจว่าคุณควรนับโหนดหรือขอบระหว่างการสอบหรือการสัมภาษณ์งาน
คำตอบง่าย ๆ :
ความลึก:
1. ต้นไม้ : จำนวนขอบ / ส่วนโค้งจากโหนดรูตถึงโหนดลีฟของต้นไม้เรียกว่าเป็นความลึกของต้นไม้
2. Node : จำนวนขอบ / ส่วนโค้งจากโหนดรูทไปยังโหนดนั้นเรียกว่าเป็นความลึกของโหนดนั้น
อีกวิธีในการทำความเข้าใจแนวคิดเหล่านั้นมีดังนี้: ความลึก: วาดเส้นแนวนอนที่ตำแหน่งรูทและปฏิบัติกับบรรทัดนี้เป็นพื้น ดังนั้นความลึกของรูทจึงเป็น 0 และลูกทั้งหมดของมันจะโตลงดังนั้นแต่ละโหนดจะมีความลึก +1 ในปัจจุบัน
ความสูง: เส้นแนวนอนเดียวกัน แต่คราวนี้ตำแหน่งพื้นดินเป็นโหนดภายนอกซึ่งเป็นใบไม้ของต้นไม้และนับขึ้นไป
ฉันต้องการโพสต์นี้เพราะฉันเป็นนักศึกษาระดับปริญญาตรีและอีกมากมายที่เราใช้ OpenDSA และตำราโอเพ่นซอร์สอื่น ๆ ดูเหมือนว่าจากคำตอบที่ได้รับการจัดอันดับสูงสุดว่าวิธีการสอนความสูงและความลึกได้เปลี่ยนจากรุ่นหนึ่งเป็นรุ่นต่อไปและฉันโพสต์สิ่งนี้เพื่อให้ทุกคนทราบว่าความขัดแย้งนี้มีอยู่ในปัจจุบันและหวังว่าจะไม่ โปรแกรม! ขอบคุณ
จากหนังสือOpenDSA Data Structures & Algos :
ถ้า n 1 , n 2 , ... , n kเป็นลำดับของโหนดในทรีเช่น n iเป็นพาเรนต์ของ n i +1 สำหรับ 1 <= i <k จากนั้นลำดับนี้เรียกว่าพา ธ จาก n 1ถึง n k kความยาวของเส้นทางคือ k − 1 หากมีเส้นทางจากโหนด R ไปยังโหนด M ดังนั้น R คือบรรพบุรุษของ M และ M เป็นผู้สืบทอดของ R ดังนั้นโหนดทั้งหมดในต้นไม้คือลูกหลานของรากของต้นไม้ในขณะที่รากเป็นบรรพบุรุษ ของโหนดทั้งหมด ความลึกของโหนด M ในต้นไม้คือความยาวของเส้นทางจากรากของต้นไม้ถึง M ความสูงของต้นไม้คือมากกว่าความลึกของโหนดที่ลึกที่สุดในต้นไม้โหนดทั้งหมดของความลึก d อยู่ที่ระดับ d ในต้นไม้ รูตเป็นโหนดเดียวที่ระดับ 0 และความลึกของมันคือ 0
รูปที่ 7.2.1: ต้นไม้ไบนารี โหนด A คือรูท โหนด B และ C เป็นลูกของ A โหนด B และ D รวมกันเป็นทรีย่อย โหนด B มีลูกสองคน: ลูกซ้ายของมันคือต้นไม้ที่ว่างเปล่าและลูกขวาของมันคือ D. โหนด A, C, และ E เป็นบรรพบุรุษของ G. โหนด N, D, E และ F ประกอบขึ้นเป็นระดับที่ 2 ของต้นไม้; โหนด A อยู่ที่ระดับ 0 ขอบจาก A ถึง C ถึง E ถึง G สร้างเส้นทางที่มีความยาว 3 โหนด D, G, H และ I เป็นใบไม้ โหนด A, B, C, E และ F เป็นโหนดภายใน ความลึกของฉันคือ 3 ความสูงของต้นไม้นี้คือ 4