ในทรีเสมือน ขอบบางส่วนจะถือว่าทึบและบางส่วนถือเป็นเส้นประ การขยายพันธุ์ตามปกติทำได้เฉพาะในต้นไม้ทึบเท่านั้น หากต้องการกระจายที่โหนด y ในทรีเสมือน ให้ใช้วิธีต่อไปนี้
อัลกอริทึมจะพิจารณาต้นไม้สามครั้ง หนึ่งครั้งในแต่ละรอบ และเปลี่ยนแปลงต้นไม้ ในการผ่านครั้งแรก โดยการกระจายเฉพาะในโซลิดทรี โดยเริ่มจากโหนด y เส้นทางจาก y ไปยังรากของต้นไม้ทั้งหมดจะกลายเป็นเส้นประ เส้นทางนี้สร้างขึ้นแข็งโดยการประกบ ระยะสุดท้ายที่โหนด y จะสร้างรากของต้นไม้ y ไม่เป็นทางการ อัลกอริทึมอธิบายดังนี้
อัลกอริทึมสำหรับ Splay(y)
ผ่าน 1 เดินขึ้นไปบนต้นไม้เสมือน แต่การกระโจนจะดำเนินการภายในทรีย่อยที่เป็นของแข็งเท่านั้น เมื่อสิ้นสุดเส้นทางนี้ เส้นทางจาก y ไปยังรูทจะกลายเป็นเส้นประ
ผ่าน 2 เดินขึ้นจากโหนด y ประกบกันที่บรรพบุรุษที่เหมาะสมของ y แต่ละคน เมื่อสิ้นสุดขั้นตอนนี้ เส้นทางจาก y ไปยังรูตจะกลายเป็นของแข็ง ยกเว้นว่าโหนด y และลูกทั้งหมดในทรีเดิม (อันก่อนผ่าน 1) ตอนนี้กลายเป็นลูกที่ถูกทิ้ง
ผ่าน 3 เดินขึ้นจากโหนด y ไปที่รูท กระจายตามปกติ
ซึ่งช่วยให้เราใช้ความรู้เดิมในการปรับปรุงการประมาณความน่าจะเป็นของเรา สำหรับชุดใบไม้ที่กำหนด เป้าหมายคือการสร้างต้นไม้ที่มีน้ำหนักเส้นทางภายนอกขั้นต่ำ
ตัวอย่างได้รับด้านล่าง
ตารางความถี่ตัวอักษร
จดหมาย | z | k | ม | c | คุณ | d | ล | อี |
ความถี่ | 2 | 7 | 24 | 32 | 37 | 42 | 42 | 120 |
รหัสฮัฟฟ์แมน
จดหมาย | ความถี่ | รหัส | บิต |
---|---|---|---|
อี | 120 | 0 | 1 |
d | 42 | 101 | 3 |
ล | 42 | 110 | 3 |
คุณ | 37 | 37100 | 3 |
ค | 32 | 1110 | 4 |
ม | 24 | 11111 | 5 |
k | 7 | 111101 | 6 |
z | 2 | 111100 | 6 |
ต้น Huffman (สำหรับตัวอย่างด้านบน) แสดงไว้ด้านล่าง