Đối với mỗi nút trong cây nhị phân cân bằng, chênh lệch tối đa về độ cao của cây con con trái và cây con con phải nhiều nhất là 1.
Chiều cao của cây nhị phân là khoảng cách từ nút gốc đến nút con xa nhất với gốc.
Dưới đây là một ví dụ:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Chiều cao của cây nhị phân: 4
Sau đây là các cây nhị phân và một báo cáo về việc chúng có cân bằng hay không:
Cây ở trên không cân đối .
Cây trên được cân bằng .
Viết chương trình ngắn nhất có thể chấp nhận làm đầu vào gốc của cây nhị phân và trả về giá trị falsey nếu cây không cân bằng và giá trị trung thực nếu cây được cân bằng.
Đầu vào
Rễ của cây nhị phân. Điều này có thể ở dạng tham chiếu đến đối tượng gốc hoặc thậm chí là một danh sách đại diện hợp lệ của cây nhị phân.
Đầu ra
Trả về giá trị trung thực: Nếu cây được cân bằng
Trả về giá trị falsey: Nếu cây không cân bằng.
Định nghĩa cây nhị phân
Cây là một đối tượng chứa một giá trị và hai cây khác hoặc con trỏ tới chúng.
Cấu trúc của cây nhị phân trông giống như sau:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
Nếu sử dụng biểu diễn danh sách cho cây nhị phân, nó có thể trông giống như sau:
[root_value, left_node, right_node]
4
, cây còn lại có cân bằng không?