균형 두 갈래 나무: 두 갈래 나무를 입력하여 이 두 갈래 나무가 균형 두 갈래 나무인지 판단합니까?(C++)

제목 설명: 두 갈래 나무를 입력하여 이 두 갈래 나무가 균형 두 갈래 나무인지 판단합니까?
  • 사고방식 분석: 균형 두 갈래 나무는 좌우 나무의 깊이 차이가 1보다 작다는 것을 말한다.따라서 우리는 먼저 이 두 갈래 나무의 좌우 자목의 깊이를 구한 다음에 그들의 차이가 1보다 작은지 아닌지를 보아야 한다
  • 코드 구현:
  • class Solution {
    public:
        bool IsBalanced_Solution(TreeNode* pRoot) {
            if(pRoot==NULL)
                return true;
    
            int leftlen=GetLength(pRoot->left);
            int rightlen=GetLength(pRoot->right);
            int dis=leftlen=rightlen;
    
            if((dis>=1)&&(dis<=-1))
            {
                return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);
            }
            else
            {
                return false;
            }
        }
    
        int GetLength(TreeNode* pRoot)
        {
            if(pRoot==NULL)
                return 0;
    
            int leftlen=GetLength(pRoot->left);
            int rightlen=GetLength(pRoot->right);
            return leftlen>rightlen?(leftlen+1):(rightlen+1);
        }
    };

    좋은 웹페이지 즐겨찾기