트리의 높이의 정의가 도대체 무엇입니까?

조회수 1326회

현재 C언어로 쉽게 풀어쓴 자료구조라는 책을 통해 이진트리에 대해 공부 중인 학생입니다.

처음에는 단순개념에 대해 깊게 생각하지 않고 넘어갔는데

점차 개념들이 헷갈리기 시작하여 트리의 높이에 대해 구글링을 해보았습니다.

그러나 책과 구글링을 통해 얻은 이진트리 개념에 대한 정의가 달라 질문드립니다.

책에서는 다음과 같이 나와있습니다. (그림은 책과 동일한 그림을 가져와봤습니다)

이미지

트리에서의 레벨은 트리의 각 층에 번호를 매기는 것으로서 정의에 의하여 루트의 레벨은 1이 되고 한층씩 내려갈수록 1씩 증가한다. 트리의 높이는 트리가 가지고 있는 최대 레벨을 말한다. 위의 트리의 높이는 3이다.


다음은 구글링을 통해 얻은 정의들입니다.

The height of a node is the length of the longest downward path to a leaf from that node. The height of the root is the height of the tree. The depth of a node is the length of the path to its root (i.e., its root path). This is commonly needed in the manipulation of the various self-balancing trees, AVL Trees in particular. The root node has depth zero, leaf nodes have height zero, and a tree with only a single node (hence both a root and leaf) has depth and height zero. Conventionally, an empty tree (tree with no nodes, if such are allowed) has height −1.

https://en.wikipedia.org/wiki/Tree_(data_structure)

Height of node – The height of a node is the number of edges on the longest downward path between that node and a leaf.

http://typeocaml.com/2014/11/26/height-depth-and-level-of-a-tree/


물론 공부를 해나가며 해외유저들이 게시해놓으신 글들이

더욱 정확하다는 편견을 가지고 보고 있지만,

책과는 정의가 다른 것은 처음 보아 많이 혼란스럽네요.

어느 정의가 맞다고 생각하십니까?

(저는 처음에 각자가 정의하기 나름인 것인가 넘겨짚다가 결국 이렇게 질문글을 올리네요..)

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    정의라는 것은 맞고 틀리는 것이 아니고. 이 책에서는 이렇게 정의한다라는 뜻입니다.

    그러니까 결론은 어느 하나가 맞다 틀리다가 아니고 그 책에서는 그렇게 정의하고 이야기를 진행한다라고 이해하셔야 합니다.

    일반적인 트리의 정의는 루트 노드가 레벨 0인데, 질문에서의 그림은 루트 노드가 레벨 1입니다.

    그리고 일반적인 트리의 높이도 제 생각에는 루트 노드에서 가장 먼 노드까지의 간선의 갯수로 나타내는 것이 일반적인데, 질문의 그림처럼 정의하는 경우도 일반적이진 않지만 간간히 보입니다.

    저도 예전에 트리 공부할 때 트리 레벨이 책마다 왜 틀리지?하고 검색해 본적이 있습니다.

    https://stackoverflow.com/questions/59151282/what-is-level-of-root-node-in-a-tree

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 정말 감사합니다 :) 누구나 다 같은 고민을 하는 것 같아요 ㅎㅎ 임지훈 2021.5.25 23:16

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)