전에 제가 직접 구성한 키보드 자판 배열을 소개한 적이 있습니다. 제 닉네임을 따서 KOEY 자판 배열이라고 혼자 이름을 붙여 봤습니다. KOEY 자판 배열은 무엇이고, 또 어떤 목적으로 그런 배열을 구성했는지 등등은 다른 글에서 소개했습니다. 해당 글은 아래의 링크를 통해 확인할 수 있습니다. 2021.03.07 - [일기장] - KOEY 키보드 자판 배열 KOEY 키보드 자판 배열 저는 요즘 키보드에 관심을 가지고 있습니다. 코드 작성하랴, 블로그에 공부일지 작성하랴 타자 치는 시간이 전에 비해 크게 증가했습니다. 그리고 코드를 작성할 때 사용하면 좋은, 효율적이고 koey.tistory.com 제가 구성한 KOEY 자판 배열을 바탕으로 제가 원하는 키보드를 직접 만들어 보고픈 마음은 가득하지만 아직..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 앞서 트리의 노드를 삭제할 때, 그 후손 노드까지 전부 삭제해야 한다고 말했습니다. 그러기 위해서는 삭제하고자 하는 노드의 모든 후손 노드들에 접근하는 일을 수행해야 합니다. 이를 '순회'라고 합니다. 이진 트리의 순회가 필요한 이유는 앞서 설명했으니, 이진 트리의 순회 방법을 설명하겠습니다. 이진 트리를 대상으로 하는 대표적인 순회 방법은 다음과 같습니다. 전위 순회(Preorder Traversal) 루트 노드를 먼저 중위 순회(Inorder Traversal) 루트 노드를 중간에 후위 순회(Postorder Traversal)..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 이제 이진 트리를 직접 구현해 볼 차례입니다. 그런데 이진 트리는 재귀적인 특성을 지니고 있습니다. 이런 재귀적인 특성 때문에 이진 트리와 관련된 일부 연산은 재귀 호출의 형태를 띱니다. 따라서 여러분은 재귀적인 사고에, 그리고 재귀 함수의 정의에 어느 정도 익숙한 상태여야 합니다. 이진 트리 역시 배열 기반으로도, 그리고 연결 리스트를 기반으로도 구현이 가능합니다. 하지만 트리를 표현하기에는 연결 리스트가 더 유연하기 때문에 앞으로 대부분의 트리는 연결 리스트를 기반으로 구현하게 됩니다. 하지만 이진 트리라면, 특히 매우 빈번한 ..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 지금부터 배우게 될 트리는 고급 자료구조로 구분이 됩니다. 그리고 앞서 설명한 선형 자료구조들과 달리 비선형 자료구조이기 때문에 어렵게 느껴질 수 있습니다. 자료구조라고 하면 보통은 데이터를 저장하고 정리하고 꺼내는 것이 전부인 것으로 생각하기 쉽습니다. 물론 지금까지 배운 리스트, 스택, 큐, 덱의 경우는 그래 왔습니다. 하지만 이를 트리에 대해서도 동일하게 생각하면 안 됩니다. 트리는 단순히 데이터를 저장하고 꺼내는 자료구조가 아닙니다. 트리는 계층적 관계를 표현하는 자료구조입니다. 때문에 나중에 보게 될 트리의 ADT를 볼 때..