สำหรับแต่ละโหนดในต้นไม้ไบนารีที่สมดุลความแตกต่างสูงสุดในความสูงของทรีย่อยของเด็กซ้ายและทรีย่อยของเด็กที่ถูกต้องคือมากที่สุด 1
ความสูงของต้นไม้ไบนารีคือระยะทางจากรูตโหนดไปยังโหนดชายด์ที่อยู่ห่างจากรูทมากที่สุด
ด้านล่างเป็นตัวอย่าง:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
ความสูงของต้นไม้ไบนารี: 4
ต่อไปนี้เป็นต้นไม้ไบนารีและรายงานว่ามีความสมดุลหรือไม่:
ต้นไม้ข้างต้นเป็นความไม่สมดุล
ต้นไม้ด้านบนมีความสมดุลมีความสมดุล
เขียนโปรแกรมที่สั้นที่สุดที่ยอมรับได้ว่าป้อนรากของต้นไม้ไบนารีและคืนค่าเท็จถ้าต้นไม้ไม่สมดุลและค่าจริงถ้าต้นไม้มีความสมดุล
อินพุต
รากของต้นไม้ไบนารี นี่อาจเป็นในรูปแบบของการอ้างอิงไปยังวัตถุรากหรือแม้แต่รายการที่เป็นตัวแทนที่ถูกต้องของต้นไม้ไบนารี
เอาท์พุต
ส่งกลับค่าความจริง:ถ้าต้นไม้มีความสมดุล
ส่งคืนค่า falsey:หากต้นไม้ไม่สมดุล
ความหมายของต้นไม้ไบนารี
ต้นไม้เป็นวัตถุที่มีค่าและต้นไม้หรือพอยน์เตอร์อีกสองตัว
โครงสร้างของต้นไม้ไบนารีมีลักษณะดังนี้:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
หากใช้การแสดงรายการสำหรับต้นไม้ไบนารีมันอาจมีลักษณะดังต่อไปนี้:
[root_value, left_node, right_node]
4
ออกต้นไม้ที่เหลืออยู่นั้นมีความสมดุลหรือไม่?