Tree란 무엇인가?

2024. 5. 29. 17:38ETC/Algorithm Concept

[서론] 

알고리즘 풀다가 트리에 대한 개념이 너무 오래전에 배워가지고 가물가물하기 때문에 블로그 글을 작성하기로 하였다. 내가 지금 실무에 있으면서 트리 구조로 이루어진 것이 있을까? 라는 생각을 하면서 공부를 하긴 했는데 아직 못찾은거 같다. 그래도 자료구조에 대한 공부를 하면 실무에서 어떤 원리로 이루어지는지 금방 파악을 할수 있어서 좋은거 같다. 이제 본론으로 들어가보자! 

[목차]

1. 트리란 무엇인가?
2. 트리와 관련된 개념들( 형제, 루트, 레벨 등등) 
3. Tree Code로 표현하기

 

1. 트리란 무엇인가? 

트리의 구조란? 

위키 백과에서 찾아보았다. 아래 내용으로 트리를 정의하고 있었다. 

트리 구조(tree 構造, 문화어: 나무구조)란 그래프의 일종으로, 한 노드에서 시작해서 다른 정점들을 순회하여 자기 자신에게 돌아오는 순환이 없는 연결 그래프이다.

https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EA%B5%AC%EC%A1%B0

 

트리 구조 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

보통 아래 그림처럼 생겼다. 

아주 정직하게 손으로 직접 그린 트리(Tree)

역시 아이패드로 그렸는데 삐뚤삐뚤하다.. 하지만 그림 이쁘게 그린게 중요한게 아니니 Pass!

저런식으로 되어있는 그림이다. 근데 컴퓨터 프로그래밍 관점에서는..아니 나 같은 초보자 입장에서는 저 그림을 보면 저걸 어떻게 코드로 옮겨?? 라는 생각을 하게 될 것이다...(나만 그런가??) 

개념적으로 누군가 표현하지 않았으면..내가 표현할 수 있을까 싶다. 그치만 누군가가 이미 해놓은게 있으니 우린 그걸 배워서 내꺼로 만들면 된다! 

2. 트리와 관련된 개념들( 형제, 루트, 레벨 등등) 

트리에 대한 정보를 본다면 위 그림과 같다. 위 그림은 아래 링크에서 참고해서 그렸다.

https://namu.wiki/w/%ED%8A%B8%EB%A6%AC%28%EA%B7%B8%EB%9E%98%ED%94%84%29

 

트리(그래프)

tree diagram, tree 樹形圖 (수형도) 수학, 특히 그래프 이론에서 회로 가 없는 연결된 무향 의

namu.wiki

 

3. Tree Code로 표현하기

Tree를 표현하자면 아래 그림과 같다. 

TreeNode

TreeNode 가운데 Value가 있고, 왼쪽, 오른쪽 각각 다른 Node를 가리킬수 있다. 이것을 코드로 표현하자면 아래와 같다. 

3.1 python 

class TreeNode:
    def __init__(self, value: str, left = None, right = None):
        self.value = value
        self.left = left
        self.right = right
        
        
    def setLeft(self, left):
        self.left = left
    
    def setRight(self, right):
        self.right = right

3.2  java

class TreeNode{

    private String value;
    private TreeNode left;
    private TreeNode right;

    public TreeNode(String value) {
        this.value = value;
    }

    public void setLeft(TreeNode left){
        this.left = left;
    }

    public void setRight(TreeNode right){
        this.right = right;
    }

}

'ETC > Algorithm Concept' 카테고리의 다른 글

Linked List는 무엇인가?  (0) 2024.02.11
Bubble Sort(버블정렬)  (0) 2022.01.25
Insert Sort(삽입정렬)  (0) 2020.03.19
Kadane 알고리즘  (0) 2017.07.25
RadixSort 기수 정렬 java  (0) 2017.01.06