Leetcode Java Reverse Odd Levels of Binary Tree
업데이트:
문제
코드
class Solution {
public TreeNode reverseOddLevels(TreeNode root) {
this.dfs(root.left, root.right, 1);
return root;
}
private void dfs(TreeNode node1, TreeNode node2, int level) {
if (node1 != null && node2 != null) {
if (level % 2 == 1) {
int temp = node1.val;
node1.val = node2.val;
node2.val = temp;
}
this.dfs(node1.left, node2.right, level + 1);
this.dfs(node1.right, node2.left, level + 1);
}
}
}
결과
설명
-
이진 트리 노드인 root의 짝수번째 레벨에 해당하는 자식 노드들의 값을 바꾸는 문제이다.
-
3번에서 정의한 dfs(TreeNode node1, TreeNode node2, int level)를 root의 left와 right 노드와 1을 순서대로 넣어 수행 후, 완성된 root를 주어진 문제의 결과로 반환한다.
-
DFS 방식으로 이진 트리 노드를 재 구성할 dfs(TreeNode node1, TreeNode node2, int level) 메서드를 정의한다.
- node1과 node2가 null이 아닌 경우만 아래를 수행한다.
- level이 홀수이면 현재 node1과 node2는 짝수 레벨이므로, 두 노드의 val 값을 바꿔준다.
- node1의 left 노드와 node2의 right 노드, level을 1 증가시킨 후 재귀 호출을 수행한다.
- node1의 right 노드와 node2의 left 노드, level을 1 증가시킨 후 재귀 호출을 수행한다.
- node1과 node2가 null이 아닌 경우만 아래를 수행한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기