균형 이진 트리의 각 노드에 대해 왼쪽 자식 하위 트리와 오른쪽 자식 하위 트리의 높이 차이는 최대 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
하면 나머지 나무의 균형이 유지됩니까?