같은 트리
을 감안할 때 두 이진 트리, 그들은 동일 여부 있는지 확인하는 함수를 작성합니다.
그들은 구조적으로 동일하며 노드의 값이 같을 경우 두 이진 트리가 같은 것으로 간주됩니다.
예 1 :
Input: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
Output: true
예 2 :
Input: 1 1
/ \
2 2
[1,2], [1,null,2]
Output: false
예 3 :
Input: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
Output: 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) {
if(p==null&&q==null){
return true;
}
if(p == null || q == null){
return false;
}
if(p.val==q.val){
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
return false;
}
}
이것은 분명히 우리가하지 보증 페이지 수, 우리는 조건을 종료하기로 결정한다, 그래서 p는, q는 비어있을 때 당신이 판단하지 않는 경우,이 언뜻 여부 쪽을 결정 또는 q가 비어 수 있다는 사실 판단 할 수 있지만, 재귀의 사용이다 여부 q를 비어, 따라서 판단 p.val == q.val 할 수 없으며, 널 포인터 오류가보고됩니다.