stack을 이용하여 비순환적으로 Inorder Traversal 구현
[순회 순서]
1. left subtree
2. root node
3. right subtree
[소스코드]
Node* stack[MAX_STACK_SIZE]; int top; void push(Node* node) { if(top >= MAX_STACK_SIZE-1) { return; } top++; stack[top] = node; } Node* pop() { Node* node = NULL; if(top == -1) { return node; } node = stack[top]; top--; return node; } void iter_inorder(Node* root) { Node* ptr; top = -1; ptr = root; while(1) { while(ptr != NULL) { push(ptr); ptr = ptr->left_child; } ptr = pop(); if(ptr == NULL) break; printf("%d ", ptr->data); ptr = ptr->right_child; } }
[결과]
'Develop' 카테고리의 다른 글
헝가리안 표기법(Hungarian Notation) (0) | 2014.06.27 |
---|---|
이진 트리_레벨 순회(Level Traversal) (0) | 2014.02.11 |
이진 트리_후위 순회(Postorder Traversal) (0) | 2014.02.11 |
이진 트리_중위 순회(Inorder Traversal) (0) | 2014.02.11 |
이진 트리_전위 순회(Preorder Traversal) (0) | 2014.02.11 |