leetcode 101. 대칭 이 진 트 리 재 귀 해법 c 언어
1503 단어 Leetcode데이터 구조 알고리즘
, 。
, [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), 관심 있 는 학생 들 은 단체 토론, 교류, 자료 찾기 등 을 추가 할 수 있 습 니 다. 앞으로 나 아 가 는 길에 당신 은 혼자 가 아 닙 니 다 ^ ^.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode 문제풀이 노트 113.경로 총 II경로 총 II 제목 요구 사항 문제풀이 두 갈래 나무와 목표와 뿌리 노드에서 잎 노드까지의 모든 경로를 찾는 것은 목표와 같은 경로입니다. 설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다. 예: 다음과 같은 두 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.