tree 나무다. 그냥 보자마자 아, 이 자료구조는 나무모양인가 라는 생각이 들었다.
실제로 그렇다. 따지자면 나무모양을 거꾸로 한 모습의 자료구조이다.
보는게 빠르다!
Tree 구조는 root를 시작점으로 여러개의 데이터를 간선으로 연결한다.
하나하나의 원들을 노드(Node)라고 부른다.
빨간색 상자로 해놓은것처럼 노드가 연결될시 상위노드를 부모노드(parent Node)
하위노드를 자식노드(child Node)라고 부른다.
자식이 없는 노드는 리프노드(leaf Node)라고 부른다.
마치 가지에 붙어있는 나뭇잎같아서 그렇게 부르는것 같다.
Tree자료구조는 높이와 깊이를 잴 수가 있다.
노드와 노드 사이의 거리(간격)를 레벨(level)이라고 부르고, 첫번째 노드인 루트(root)를 level1 로 설정한다. 루트의 가장 안쪽 노드까지의 레벨을 Tree의 높이라고 하고, 반대로 특정 노드부터 시작해서 루트까지의 레벨을 노드의 깊이라고 부른다. 같은 레벨에 있는 노드들은 서로 형제이며 자매니까(sibling Node) 형제노드라고 부른다.
Tree내부에 또 Tree구조가 만들어질때가 있는데 이를 서브트리라고 부른다.
(D, H, I / B, D, E / C,F,G,J)
실생활에서 사용하는 Tree구조는 컴퓨터의 디렉토리 구조를 생각하면 된다.
한 폴더에서 계속해서 내부 폴더로 내려가고, 내부 폴더에서 또 다른 폴더로 내려가는 구조를 생각하면 쉽겠다!