leetcode 101. 대칭 이 진 트 리 재 귀 해법 c 언어

제목:
       ,           。
  ,    [1,2,2,3,4,4,3]     。

    1
   / \
  2   2
 / \ / \
3  4 4  3

       [1,2,2,null,3,null,3]         :

    1
   / \
  2   2
   \   \
   3    3

이 문 제 는 처음에 대기 열 + BFS 를 사용 하 는 것 이 생각 났 습 니 다. c 언어 에 기 존의 대기 열 데이터 구조 가 없 기 때문에 스스로 실현 해 야 합 니 다. 귀 찮 습 니 다.다른 방식 으로 예시 1 을 보 니 중 서 를 옮 겨 다 니 는 것 이 바로 앞 뒤 가 대칭 적 인 서열 이 라 고 생각 합 니 다. 코드 를 써 서 제출 하 는 것 이 잘못 되 었 습 니 다. 중 서 를 옮 겨 다 니 는 상황 에서 예시 2 와 같은 유형 도 대칭 적 이지 만 제목 의 요구 에 부합 되 지 않 습 니 다.나중에 재 귀 방식 을 사용 하여 거울 이 대칭 적 이 고 뿌리 노드 는 말 할 필요 가 없 으 며 두 개의 나무 가 대칭 적 이면 된다.하위 트 리 를 재 귀적 으로 옮 겨 다 니 며 쌍방 은 각각 대칭 적 인 노드 를 제공 하여 비교 한다. 예 를 들 어 왼쪽 트 리 는 왼쪽 아 이 를 제공 하고 오른쪽 트 리 는 오른쪽 아이 와 왼쪽 트 리 를 제공한다.방법 은 매우 교묘 하고 간소화 하 며 다음은 c 언어의 해법 이다.
//    
bool isMirror(struct TreeNode* left, struct TreeNode* right)
{
    if (left == NULL && right == NULL)
        return 1;
    else if (!left || !right)
        return 0;
    else
    {
        //                
        if (left->val == right->val)
            return (isMirror(left->left, right->right) && isMirror(left->right, right->left));
        return 0;
    }
}

bool isSymmetric(struct TreeNode* root){
    return isMirror(root, root);
}

 
=============================================================================================
Linux 응용 프로그램, 커 널, 구동 개발 커 뮤 니 케 이 션 토론 군 (745510310), 관심 있 는 학생 들 은 단체 토론, 교류, 자료 찾기 등 을 추가 할 수 있 습 니 다. 앞으로 나 아 가 는 길에 당신 은 혼자 가 아 닙 니 다 ^ ^.

좋은 웹페이지 즐겨찾기