Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ cho Inorder Tree Traversal mà không cần đệ quy

Nếu cây nhị phân được duyệt theo thứ tự, cây con bên trái được truy cập đầu tiên, sau đó đến cây gốc và sau đó là cây con bên phải. Đầu ra khóa theo thứ tự tăng dần trong in_order traversal. Đây là một chương trình C ++ cho Inorder Tree Traversal mà không cần đệ quy.

Thuật toán

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.

Mã mẫu

#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;
}

Đầu ra

1 6 9 7 2