
-Code
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
// 리프 노드를 저장하기 위한 리스트
ArrayList<Integer> treeLeafs1 = new ArrayList<Integer>();
ArrayList<Integer> treeLeafs2 = new ArrayList<Integer>();
// 두 root의 리프 노드들 구하기
getLeafs(root1, treeLeafs1);
getLeafs(root2, treeLeafs2);
return treeLeafs1.equals(treeLeafs2);
}
private static void getLeafs(TreeNode root, ArrayList leafs) {
// root가 null인경우 빠져나옴
if (root == null) {
return;
}
// 다음 왼쪽과 오른쪽 노드가 없는 경우 리프 노드임으로 저장
if (root.left == null && root.right == null) {
leafs.add(root.val);
return;
}
// 완쪽과 오른쪽으로 이동하면서 검사
getLeafs(root.left, leafs);
getLeafs(root.right, leafs);
}
}
리프 노드를 어떻게 바교하나 생각했을 때 리프 노드만 담아서 비교하라는 힌트를 보고 구현했습니다. 하지만 ArrayList를 변수로 받으면 return을 따로 ArrayList로 안 해도 저장되는 것과 root가 아예 null인 경우 조건문을 빼먹어서 해당 부분을 해결하니 통과 됐습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [LeetCode/Java] Guess Number Higher or Lower (0) | 2025.12.31 |
|---|---|
| [LeetCode/Java] Search in a Binary Search Tree (0) | 2025.12.31 |
| [LeetCode/Java] Maximum Depth of Binary Tree (0) | 2025.12.31 |
| [LeetCode/Java] Number of Recent Calls (0) | 2025.12.31 |
| [LeetCode/Java] Unique Number of Occurrences (0) | 2025.12.31 |