균형 잡힌 이진 트리-자바

균형 잡힌 바이너리 트리-자바

제목 설명

이진 트리가 균형 이진 트리인지 확인하려면 이진 트리를 입력하십시오.

여기에서는 정렬 된 이진 트리인지 여부가 아닌 균형 만 고려하면됩니다.

가 빈 트리 또는 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);
    }
}

추천

출처blog.csdn.net/weixin_43957211/article/details/114922535