หากต้นไม้ไบนารีถูกสำรวจตามลำดับ ทรีย่อยด้านซ้ายจะถูกเยี่ยมชมก่อน จากนั้นจึงไปที่รูทและต่อมาไปยังทรีย่อยทางขวา เอาต์พุตคีย์ในลำดับจากน้อยไปมากในการข้ามผ่าน in_order นี่คือโปรแกรม C++ สำหรับ Inorder Tree Traversal โดยไม่มีการเรียกซ้ำ
อัลกอริทึม
Begin Function inOrder(): Declare a stack s. Declare the current node as root. While current node is not null and stack is not empty do While current node is not null do Push the current node on the top of the stack Make the left child node as current node Point the current node at the top of the stack. Pop the top most node from the stack Print the current node. Make the right node as current node. Insert some elements at root, left node and right node in stack. Call the inOrder() function to traverse 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(7); root->l = new n(6); root->r = new n(2); root->l->l = new n(1); root->l->r = new n(9); inOrder(root); return 0; }
ผลลัพธ์
1 6 9 7 2