문제 설명
Invert Binary Tree는 이진 트리의 좌우 서브트리를 뒤집는 문제임.
각 노드의 왼쪽과 오른쪽 자식을 스왑해서 전체 트리를 반전시켜야 함.
각 노드의 왼쪽과 오른쪽 자식을 스왑해서 전체 트리를 반전시켜야 함.
예를 들어, 트리가 4(2(1,3),6(5,7))면 반전 후 4(6(7,5),2(3,1))이 됨. 입력은 TreeNode 구조체로 주어지고, 루트 노드를 받아 반전된 트리의 루트를 리턴하면 됨.
푼 과정
재귀로 풀었음. 루트가 nil이면 그대로 리턴. nil 아니면 현재 노드의 왼쪽과 오른쪽 자식을 temp 변수 써서 스왑함.
그 다음 왼쪽과오른쪽 서브트리를 재귀로 호출해서 각각 반전.
마지막에 루트 리턴. 코드 간단하고 트리 반전 로직 딱 맞췄음
package main
import (
)
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func invertTree(root *TreeNode) *TreeNode {
// root가 nil 이면 좌우 반전 없이 return
if root == nil {
return root
}
// 받은 root의 좌우를 반전
temp_left := root.Left
root.Left = root.Right
root.Right = temp_left
invertTree(root.Left)
invertTree(root.Right)
return root
}
func main() {
}
'leetcode , 백준' 카테고리의 다른 글
[반복문] LeetCode 228번 문제 학습 (0) | 2025.04.25 |
---|---|
[스택,큐] LeetCode 225번 문제 학습 (0) | 2025.04.24 |
[배열,해시테이블,정렬] LeetCode 217번 문제 학습 (0) | 2025.04.23 |
[재귀,반복문] LeetCode 206번 문제 학습 (0) | 2025.04.22 |
[재귀,반복문] LeetCode 203번 문제 학습 (0) | 2025.04.22 |