13일차 문제 : Invert Binary Tree

  1. 발생했던 문제

    오늘 문제는 2진 트리에서 루트를 제외한 노드들의 순서를 뒤집는 문제였다. 처음 보고 스택으로

    풀어야 되겠다 라는 생각이 바로 들었다. 하지만 오른쪽 노드와 왼쪽 노드를 바꿔주려고 temp

    변수를 사용해서 temp = node.right; node.right = node.left; node.left = temp 이런 식으로 바꿨

    는데, 테스트 케이스 1이 오류가 났다. C++에선 이런 식으로 보통 해결했었는데, 파이썬에선

    다른 방식이 있나 구글링해서 찾아보니 생각보다 쉬운 방법이 있었다. 하지만 C++과는 방법이

    달라서 이건 간단하기도 하고 그러니 외워두면 좋겠다는 생각도 들었다.

  2. 해결 방법

스택으로 문제를 풀었는데, 처음 시도했던 temp 변수 사용은 결과적으론 오답이었다. node.left,

node.right 라는 왼쪽, 오른쪽 노드를 각각 나타내는 변수가 있다고 할 때, node.left, node.right

= node.right, node.left 이렇게 코드를 쓰면 왼쪽 노드와 오른쪽 노드를 서로 바꿀 수 있다고 한다.

아주 쉽고 직관적인 방법이다. 마지막에 바꿔준 왼쪽과 오른쪽 노드들을 각각 스택에 추가하면

구하고자 하는 뒤집힌 트리가 만들어진다.

  1. 새롭게 안 사실

트리의 왼쪽,오른쪽 노드를 서로 바꿔주는 코드에 대해서 배웠다. 앞으로 문제 풀이에도 종종

쓰일 유용한 방법 같으니 외워두면 좋을 것 같다.

Untitled

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL