Advertisement
JonathanA007

Tree 10.10 Tugas (Kelompok 1)

May 13th, 2024
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.12 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>  
  4. using namespace std;
  5.  
  6. // Mendefinisikan konstanta untuk ukuran maksimum array
  7. const int MAX_SIZE = 40;
  8.  
  9. // Definisi struktur Node BST
  10. struct Node {
  11.     int data;
  12.     Node *left;
  13.     Node *right;
  14.     Node(int);
  15. };
  16.  
  17. // Definisi class Tree
  18. struct Tree {
  19.     Node *root;      
  20.     int nodeCount;
  21.     int arrayIndex;
  22.     Node *nodes[MAX_SIZE];
  23.  
  24.     Tree();
  25.     void insertNode(int);
  26.     void preorderTraversal();
  27.     void inorderTraversal();
  28.     void postorderTraversal();
  29.  
  30. private:
  31.     void insert(Node *, int);
  32.     void preorder(Node *);
  33.     void inorder(Node *);
  34.     void postorder(Node *);
  35. };
  36.  
  37.  
  38. Node::Node(int dt) {
  39.     data = dt;
  40.     left = right = NULL;
  41. }
  42. Tree::Tree() {
  43.     root = NULL;
  44.     nodeCount = 0;
  45.     arrayIndex = 0;
  46. }
  47.  
  48. // Method untuk menyisipkan node baru ke dalam BST
  49. void Tree::insertNode(int dt) {
  50.     if (nodeCount >= 10 || arrayIndex >= MAX_SIZE)
  51.         return;
  52.     if (root == NULL) {
  53.         root = new Node(dt);
  54.         nodes[arrayIndex++] = root;
  55.         nodeCount++;
  56.     } else {
  57.         insert(root, dt);
  58.     }
  59. }
  60.  
  61. // Fungsi rekursif untuk menyisipkan node baru ke dalam BST
  62. void Tree::insert(Node *node, int dt) {
  63.     if (dt < node->data) {
  64.         if (node->left == NULL && arrayIndex < MAX_SIZE) {
  65.             node->left = new Node(dt);
  66.             nodes[arrayIndex++] = node->left;
  67.             nodeCount++;
  68.         } else {
  69.             insert(node->left, dt);
  70.         }
  71.     }
  72.     else if (dt > node->data) {
  73.         if (node->right == NULL && arrayIndex < MAX_SIZE) {
  74.             node->right = new Node(dt);
  75.             nodes[arrayIndex++] = node->right;
  76.             nodeCount++;
  77.         } else {
  78.             insert(node->right, dt);
  79.         }
  80.     }
  81. }
  82.  
  83. void Tree::preorderTraversal() {
  84.     preorder(root);
  85. }
  86. void Tree::inorderTraversal() {
  87.     inorder(root);
  88. }
  89. void Tree::postorderTraversal() {
  90.     postorder(root);
  91. }
  92.  
  93.  
  94. void Tree::preorder(Node *node) {
  95.     if (node == NULL)
  96.         return;
  97.     cout << node->data << ", ";
  98.     preorder(node->left);
  99.     preorder(node->right);
  100. }
  101. void Tree::inorder(Node *node) {
  102.     if (node == NULL)
  103.         return;
  104.     inorder(node->left);
  105.     cout << node->data << ", ";
  106.     inorder(node->right);
  107. }
  108. void Tree::postorder(Node *node) {
  109.     if (node == NULL)
  110.         return;
  111.     postorder(node->left);
  112.     postorder(node->right);
  113.     cout << node->data << ", ";
  114. }
  115.  
  116. // Fungsi utama
  117. int main() {
  118.     // Membuat objek Tree
  119.     Tree *tree = new Tree();
  120.     int value;
  121.     cout << "Masukkan nilai data berikut: " << endl;
  122.     // Menghasilkan dan menyisipkan 10 bilangan acak dari 0-99 ke dalam BST
  123.     srand(time(NULL));
  124.     for (int i = 0; i < 10; i++) {
  125.         value = rand() % 100;
  126.         cout << value << " ";
  127.         tree->insertNode(value);
  128.     }
  129.     // Traversal BST
  130.     cout << "\n\nPreorder Traversal" << endl;
  131.     tree->preorderTraversal();
  132.     cout << "\n\nInorder Traversal" << endl;
  133.     tree->inorderTraversal();
  134.     cout << "\n\nPostorder Traversal" << endl;
  135.     tree->postorderTraversal();
  136.  
  137.     delete tree;
  138.     return 0;
  139. }
  140.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement