두 갈래 나무가 같은지 여부(귀속판)
두 개의 두 갈래 나무를 정해서 함수를 만들어서 그것들이 같은지 확인하세요.만약 두 나무가 구조적으로 같고 노드가 같은 값을 가지고 있다면 그것들은 같다고 여긴다.예시 1: 입력: 1/\/\2 3 2 3 [1,2,3], [1,2,3] 출력: true 예시 2: 입력: 1/\2 2 [1,2],[1,null,2] 출력: false 예 3: 입력: 1/\/\2 1 2 1 2 [1,2,1], [1,1,2] 출력: false 출처: 리코드(LeetCode) 링크:https://leetcode-cn.com/problems/same-tree저작권은 인터넷 소유에 귀속된다.상업 전재는 정부에 연락하여 권한을 부여하고, 비상업 전재는 출처를 명시해 주십시오.
분석:
이 제목을 보고 나의 첫 반응은 여전히 귀착되었다. 어쩔 수 없이 최근에 귀착을 사랑하게 되었고 무한진향 순환에 빠져서 헤어나올 수 없었다.
나의 사고방식은 먼저 두 갈래 나무의 꼭대기 노드를 비교하는 것이다. 만약에 두 갈래 나무가 모두null이라면 계속 비교할 필요가 없다.true로 되돌아간다.만약 두 개의 두 갈래 나무가null이 아니라면 양자의 노드 값을 비교해 보세요. 만약 값이 같다면 상관하지 마세요. 만약 다르다면 계속 비교할 필요가 없습니다. 직접false로 돌아갑니다.마지막으로 상기에서 언급한 세 개의 리턴 중 어느 하나라도 실행 조건을 만족시키지 못하면 두 노드의 좌우 하위 노드를 귀속 방법으로 전송하여 다음 라운드를 비교한다.
최종적으로 임의의 두 위치의 노드가 다르면 최종 결과는 반드시false(코드 참조)이다.
문제:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
return check(p, q);
}
public boolean check(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
}
if (p != null && q != null) {
if (p.val != q.val) {
return false;
}
} else {
return false;
}
return check(p.left, q.left) && check(p.right, q.right);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.