이진 트리를 순서대로 순회하면 왼쪽 하위 트리를 먼저 방문한 다음 루트를 방문한 다음 오른쪽 하위 트리를 방문합니다. in_order 순회에서 키를 오름차순으로 출력합니다. 재귀 없는 Inorder Tree Traversal을 위한 C++ 프로그램입니다.
알고리즘
Begin Declare a structure n. Declare d of the integer datatype. Declare a pointer l against structure n. Declare a pointer r against structure n. Declare a constructor of structure n. Pass an integer variable d to parameter. this->d = d l = r = NULL Declare inOrder(struct n *root) function. Declare a stack s. Declare a pointer current against structure n. Initialize n *current = root. while (current != NULL || s.empty() == false) while (current != NULL) s.push(current) current = current->l current = s.top() s.pop() print current->d. current = current->r. insert values in nodes of tree. Call inOrder(root) function to travern the tree. End.
예시
#include<bits/stdc++.h> using namespace std; struct n { int d; struct n* l; struct n* r; n (int d) { this->d = d; l = r = NULL; } }; void inOrder(struct n *root) { stack<n *> s; n *current = root; while (current != NULL || s.empty() == false) { while (current != NULL) { s.push(current); current = current->l; } current = s.top(); s.pop(); cout << current->d << " "; current = current->r; } } int main() { struct n* root = new n(6); root->l = new n(4); root->r= new n(7); root->l->l = new n(8); root->l->r= new n(5); root->r->l = new n(9); root->r->r = new n(10); inOrder(root); return 0; }
출력
8 4 5 6 9 7 10