কম্পিউটার টিউটোরিয়াল

ডেটা স্ট্রাকচারে পোস্ট-অর্ডার ট্রি ট্রাভার্সাল


এই সেকশনে আমরা বাইনারি সার্চ ট্রির পোস্ট-অর্ডার ট্রাভার্সাল টেকনিক (রিকার্সিভ) দেখব।

ধরা যাক আমাদের একটা ট্রি আছে এরকম -

ডেটা স্ট্রাকচারে পোস্ট-অর্ডার ট্রি ট্রাভার্সাল

ট্রাভার্সাল সিকোয়েন্স হবে যেন: 8, 5, 15, 23, 20, 16, 10

অ্যালগরিদম

postorderTraverse(root):
Begin
    if root is not empty, then
        postorderTraversal(left of root)
        postorderTraversal(right of root)
        print the value of root
    end if
End

উদাহরণ

#include 
using namespace std;
class node {
public:
    int h_left, h_right, bf, value;
    node *left, *right;
};
class tree {
private:
    node *get_node(int key);
public:
    node *root;
    tree() {
        root = NULL; //set root as NULL at the beginning
    }
    void postorder_traversal(node *r);
    node *insert_node(node *root, int key);
};
node *tree::get_node(int key) {
    node *new_node;
    new_node = new node; //create a new node dynamically
    new_node->h_left = 0; new_node->h_right = 0;
    new_node->bf = 0;
    new_node->value = key; //store the value from given key
    new_node->left = NULL; new_node->right = NULL;
    return new_node;
}
void tree::postorder_traversal(node *r) {
    if(r != NULL) { //When root is present, visit left - root - right
        postorder_traversal(r->left);
        postorder_traversal(r->right);
        cout << r->value << " ";
    }
}
node *tree::insert_node(node *root, int key) {
    if(root == NULL) {
        return (get_node(key)); //when tree is empty, create a node as root
    }
    if(key < root->value) { //when key is smaller than root value, go to the left
        root->left = insert_node(root->left, key);
    } else if(key > root->value) { //when key is greater than root value, go to the right
        root->right = insert_node(root->right, key);
    }
    return root; //when key is already present, do not insert it again
}
main() {
    node *root;
    tree my_tree;
    //Insert some keys into the tree.
    my_tree.root = my_tree.insert_node(my_tree.root, 10);
    my_tree.root = my_tree.insert_node(my_tree.root, 5);
    my_tree.root = my_tree.insert_node(my_tree.root, 16);
    my_tree.root = my_tree.insert_node(my_tree.root, 20);
    my_tree.root = my_tree.insert_node(my_tree.root, 15);
    my_tree.root = my_tree.insert_node(my_tree.root, 8);
    my_tree.root = my_tree.insert_node(my_tree.root, 23);
    cout << "Post-Order Traversal: ";
    my_tree.postorder_traversal(my_tree.root);
}

আউটপুট

Post-Order Traversal: 8 5 15 23 20 16 10
  1. ডেটা স্ট্রাকচারে বাইনারি ট্রি এবং প্রোপার্টি

  2. ডেটা স্ট্রাকচারে বাইনারি ট্রি রিপ্রেজেন্টেশন

  3. পাইথনে বাইনারি ট্রি পোস্টঅর্ডার ট্রাভার্সাল

  4. পাইথনে ইনঅর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করা