티스토리 뷰
반응형
문제
https://leetcode.com/problems/reverse-odd-levels-of-binary-tree/description/
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
풀이 코드
/**
* 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 TreeNode reverseOddLevels(TreeNode root) {
DFS(root.left, root.right, 1);
return root;
}
private static void DFS(TreeNode node1, TreeNode node2, int level) {
if (node1 == null) {
return;
} else {
if (level % 2 != 0) {
int temp = node1.val;
node1.val = node2.val;
node2.val = temp;
}
DFS(node1.left, node2.right, level + 1);
DFS(node1.right, node2.left, level + 1);
}
}
}
입출력 예시
Input: root = [2,3,5,8,13,21,34]
Output: [2,5,3,8,13,21,34]
Explanation: The tree has only one odd level. The nodes at level 1 are 3, 5 respectively, which are reversed and become 5, 3.
코드 설명
- root를 기준으로 Binary Tree를 왼쪽과 오른쪽으로 나누어 2개의 Binary Tree라고 생각합니다.
- 왼쪽 Tree는 전위 순회로 Tree를 순회하고, 오른쪽 Tree는 후위 순회로 Tree를 순회합니다.
- Tree의 level(Depth)은 DFS method에 parameter로 넘겨서 확인 할 수 있도록 합니다.
- level이 홀수 일때, 왼쪽 Tree의 node.val과 오른쪽 Tree의 node.val을 서로 바꿔줍니다.
- DFS method로 Tree의 순회가 끝나면 root를 return 합니다.
반응형
'코딩테스트 > LeetCode' 카테고리의 다른 글
Symmetric Tree (0) | 2023.10.10 |
---|---|
Two Sum IV - Input is a BST (0) | 2023.10.10 |
Count Good Nodes in Binary Tree (0) | 2023.10.06 |
Find Elements in a Contaminated Binary Tree (0) | 2023.10.05 |
All Paths From Source to Target (0) | 2023.10.03 |
반응형