[자료구조] 이진트리 연산

2022. 11. 11. 20:50·자료구조
반응형

### getCount() ###

트리의 전체 노드 수를 반환하는 함수 

1
2
3
4
5
6
7
8
9
10
11
int getCount() { return isEmpty() ? 0 : getCount(root); }
    // 매개변수를 안넣어서 루트를 매개변수로 하는 함수 호출
 
    int getCount(BinaryNode* Node) {
        if (Node == NULL) return 0;
        // 재귀적으로 함수를 호출하다가 NULL 까지 가면 0 반환
        else 
            return 1 + getCount(Node->getLeft())
                + getCount(Node->getright());
        // 반환되는 값에 1을 더함으로써 자기 자신의 개수를 추가함
    }
Colored by Color Scripter
cs

 

 

### getHeight() ###

트리의 높이 ( 서브 트리의 높이 +1 ) 을 반환하는 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int getHeight() { return isEmpty() ? 0 : getHeight(root); }
    // 매개변수를 안넣어서 루트를 매개변수로 하는 함수 호출
 
    int getHeight(BinaryNode* Node) {
        if (Node == NULL) return 0;
        // 재귀적으로 함수를 호출하다가 NULL까지 가면 0 반환
 
        int h_left = getHeight(Node->getLeft());
        // 왼쪽 서브트리의 높이 계산
 
        int h_right = getHeight(Node->getright());
        // 오른쪽 서브트리의 높이 계산
 
        return (h_left > h_right) ? h_left + 1 : h_right + 1;
        // 왼쪽 서브트리, 오른쪽 서브트리의 높이를 비교하며 
        // 1씩 증가시킴으로써 최종적으로 둘 중에 더 높은 서브트리의 
        // 높이를 반환한다.
    }
Colored by Color Scripter
cs

 

 

### getLeafCount() ###

트리의 단말 노드 수를 반환하는 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int getLeafCount() { return isEmpty() ? 0 : getLeafCount(root); }
    // 매개변수를 안넣어서 루트를 매개변수로 하는 함수 호출
 
    int getLeafCount(BinaryNode* Node) {
        if (Node == NULL) return 0;
        // 재귀적으로 함수를 호출하다가 NULL까지 가면 0 반환
        // NULL을 가르키는 포인터를 가지고 있지만 단말노드는 아닌 상황에 쓰임
 
        if (Node->isLeaf()) return 1;
        // 재귀적으로 함수를 호출하다가 단말노드에서 1 반환
 
        else {
            return getLeafCount(Node->getLeft()) +
                getLeafCount(Node->getright());
            // 단말노드를 만나면 1을 반환하기 때문에 왼쪽 서브트리의 
            // 단말노드 개수 + 오른쪽 서브트리의 단말노드 개수를 하면
            // 전체 단말노드 개수를 반환할 수 있다. ( 1(자기자신)을 더하지 않아도 )
        }
    }
Colored by Color Scripter
cs
반응형

'자료구조' 카테고리의 다른 글

[자료구조] 이진탐색트리, BinarySearhTree 개념, 탐색, 삽입  (0) 2022.11.15
[자료구조] 수식 트리  (0) 2022.11.11
[자료구조]이진트리(BinaryTree) 순회  (0) 2022.11.07
[자료구조] 이진트리(Binary Tree) 기초  (0) 2022.11.07
[자료구조]DblLinkedList - 이중연결리스트 사용  (1) 2022.10.31
'자료구조' 카테고리의 다른 글
  • [자료구조] 이진탐색트리, BinarySearhTree 개념, 탐색, 삽입
  • [자료구조] 수식 트리
  • [자료구조]이진트리(BinaryTree) 순회
  • [자료구조] 이진트리(Binary Tree) 기초
김천종
김천종
  • 김천종
    김천종
    김천종
  • 전체
    오늘
    어제
    • 분류 전체보기 (88)
      • 파이썬 (6)
      • Pandas (24)
      • 자료구조 (14)
      • 알고리즘 (4)
      • 아무거나 (16)
      • 머신러닝 (20)
      • ML 실습 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
김천종
[자료구조] 이진트리 연산
상단으로

티스토리툴바