*해결과정
우리가 필요한 것은 depth(깊이), parent(부모)이다. 새로운 배열을 만들어서 DFS순회를 돌면서 depth와 parent를 갱신하면 된다. 굳이 새로운 class를 만들 것 없이 매개변수로 전달하면 된다.
class Solution {
int xDepth=0;
int yDepth=0;
int xParent = 0;
int yParent = 0;
public boolean isCousins(TreeNode root, int x, int y) {
DFS(root,x,y,0,-1);
return (xDepth==yDepth) && (xParent!=yParent);
}
public void DFS(TreeNode root, int x, int y, int depth,int parent){
if(root.val==x) {
xDepth = depth;
xParent = parent;
}
if(root.val==y) {
yDepth = depth;
yParent = parent;
}
if(root.left!=null) DFS(root.left,x,y,depth+1, root.val);
if(root.right!=null) DFS(root.right,x,y,depth+1, root.val);
}
}
반응형
'Algorithm' 카테고리의 다른 글
563 : Binary Tree Tilt ( leetcode / java ) (0) | 2020.10.30 |
---|---|
235 : Lowest Common Ancestor of a Binary Search Tree ( leetcode / java ) (0) | 2020.10.30 |
1662 : 압축 ( 백준 / java ) (0) | 2020.10.29 |
16926 배열돌리기1, 16927 배열돌리기2 ( 백준 / java ) (0) | 2020.10.29 |
606 : Construct String from Binary Tree ( leetcode / java ) (0) | 2020.10.29 |