균형 잡힌 바이너리 트리-자바
제목 설명
이진 트리가 균형 이진 트리인지 확인하려면 이진 트리를 입력하십시오.
여기에서는 정렬 된 이진 트리인지 여부가 아닌 균형 만 고려하면됩니다.
가 빈 트리 또는 1을 초과하지 않으며 그 좌측 및 우측 서브 트리의 높이 차이의 절대 값이며, 좌측 및 우측 서브 트리 모두 균형 잡힌 이진 트리이다 : 균형 이진 트리는 다음과 같은 속성을 갖는다.
예 1
시작하다
{1,2,3,4,5,6,7}
반환 값
true
균형 이진 트리의 왼쪽 및 오른쪽 하위 트리도 균형 이진 트리이므로, 소위 균형은 왼쪽 및 오른쪽 하위 트리의 높이 차이가 1을 초과하지 않는 것입니다. 각 노드를 반복하여 하위 트리 균형을 결정하기 만하면됩니다. (왼쪽 및 오른쪽 하위 트리 사이의 높이 차이는 1을 초과하지 않습니다).
방법 (재귀)
재귀를 사용하는 것을 잊지 마십시오. 일반적으로 끝까지 재귀 결과를 판단하면됩니다. 과목에는 요구 사항과 조건이 있습니다.
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
return depth(root) != -1;
}
public int depth(TreeNode root){
if(root == null)
return 0;
int left = depth(root.left);
if(left == -1)
return -1;
int right = depth(root.right);
if(right == -1)
return -1;
if(left - right < (-1) || left - right > 1)
return -1;
else
return 1+(left > right?left:right);
}
}