두 개의 트리가 주어질 때, 두 트리가 같은지를 보는 문제이다.
여기서 중요한 점은 노드의 위치와 노드가 가지는 값이 모두 같아야 한다는 거다.
그렇기에 평소대로 쓰던 dfs나 bfs를 그대로 쓸 수가 없다. 노드의 위치까지 고려를 해줘야 하기 때문이다. 또한 null 값의 처리도 주의해야 한다.
문제를 혼자 풀 때는 노드의 위치를 제대로 신경쓰지 못했고 null을 제대로 처리하지 못했다
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
return bfs(p, q);
}
public static boolean bfs(TreeNode root1, TreeNode root2){
if(root1 == null && root2 == null){
return true;
}
if(root1 == null || root2 == null){
return false;
}
if(root1.val != root2.val){
return false;
}
return bfs(root1.left, root2.left) && bfs(root1.right, root2.right);
}
}
https://leetcode.com/problems/same-tree/solutions/250926/same-tree/
(h0me 유저의 풀이)
노드의 위치가 아주 중요했던 문제. 그냥 지금까지 풀었던 bfs나 dfs로 풀면 노드의 위치를 신경 쓸 수 없다.