#순회의 종류 3개

순회의 기준은 트리노드를 언제 방문하느냐에 있다.

즉 루트 노드를 방문하는 시점에 따라 서 중위, 후위, 전위 순회로 나뉘어 진다.


1단계 왼쪽 서브트리의 순회

2단계 루트노드의 방문

3단계 오른쪽 서브트리의 순회


- 전위 순회(Preorder Traversal)


- 중위 순회(Inorder Traversal)


- 후위 순회(Postorder Traversal)


이진트리 구현

h


cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include"Tree.h"
 
TreeNode::TreeNode()
{
    m_data = 0;
    m_level = 0;
    mp_lift = NULL;
    mp_right = NULL;
}
 
TreeNode::~TreeNode()
{
    if (mp_lift != NULLdelete mp_lift;
    if (mp_right != NULLdelete mp_right;
}
 
void TreeNode::MakeLiftSubTree(int _index)
{
    TreeNode* pNode = new TreeNode();
    pNode->m_level = this->m_level + 1;
    pNode->m_data = _index;
    this->mp_lift = pNode;
}
 
void TreeNode::MakeRightSubTree(int _index)
{
    TreeNode* pNode = new TreeNode();    
    pNode->m_level = this->m_level + 1;
    pNode->m_data = _index;
    this->mp_right = pNode;
}
 
void TreeNode::SetData(int _index)
{
    m_data = _index;
}
 
int TreeNode::GetData()
{
    return m_data;
}
 
TreeNode* TreeNode::GetLiftSubTree()
{
    return mp_lift;
}
 
TreeNode* TreeNode::GetRightSubTree()
{
    return mp_right;
}
 
void TreeNode::PreorderTraverse()
{
    if (this == NULLreturn;
    cout << m_data << endl;
    this->mp_lift->InorderTraverse();
    this->mp_right->InorderTraverse();
}
 
void TreeNode::InorderTraverse()
{
    if (this == NULLreturn;
    this->mp_lift->InorderTraverse();
    cout << m_data << endl;
    this->mp_right->InorderTraverse();
}
 
void TreeNode::PostorderTraverse()
{
    if (this == NULLreturn;
    this->mp_lift->InorderTraverse();
    this->mp_right->InorderTraverse();
    cout << m_data << endl;
}
cs

사용해보기


level 그림


1번 트리의 순회 결과

전위 순회 결과

중위 순회 결과

후위 순회 결과


2번 트리의 순회 결과

전위 순회 결과

중위 순회 결과

후위 순회 결과

반응형

'Programming > DS & Algorithm' 카테고리의 다른 글

알고리즘 문제 3n + 1  (0) 2015.08.18
수식 트리(Expression Tree)의 구현  (0) 2015.06.11
트리(Tree)의 개요  (0) 2015.06.09
하노이 타워  (0) 2015.06.08
피보나치 수열(황금비)  (0) 2015.06.07
이진탐색 알고리즘  (0) 2015.06.04
순차탐색 알고리즘  (0) 2015.06.03
스텍, 큐 구현  (0) 2015.05.27