Anda di halaman 1dari 7

Nama: Muhamad Defran Malsaputra

NPM: 40622100066

NO 1. Tulislah versi dari potongan code mu sendiri mengenai cara membuat sebuah tree
menggunakan linked list?

Code Saya

#include <iostream>

// Definisi struktur Node


struct Node {
int data;
Node* kiri;
Node* kanan;

// Konstruktor
Node(int value) : data(value), kiri(NULL), kanan(NULL) {}
};

// Definisi kelas BinaryTree


class BinaryTree {
private:
Node* root;

// Fungsi rekursif untuk menambahkan node baru


Node* insertRecursive(Node* current, int value) {
if (current == NULL) {
return new Node(value);
}

if (value < current->data) {


current->kiri = insertRecursive(current->kiri, value);
} else if (value > current->data) {
current->kanan = insertRecursive(current->kanan, value);
}

return current;
}

// Fungsi rekursif untuk mencetak pohon secara inorder


void inorderTraversal(Node* current) {
if (current != NULL) {
inorderTraversal(current->kiri);
std::cout << current->data << " ";
inorderTraversal(current->kanan);
}
}

public:
// Konstruktor
BinaryTree() : root(NULL) {}

// Fungsi untuk menambahkan node baru


void insert(int value) {
root = insertRecursive(root, value);
}

// Fungsi untuk mencetak pohon secara inorder


void printInorder() {
inorderTraversal(root);
std::cout << std::endl;
}
};

int main() {
BinaryTree tree;

// Menambahkan beberapa node ke dalam pohon


tree.insert(10);
tree.insert(5);
tree.insert(15);
tree.insert(3);
tree.insert(7);

// Mencetak pohon secara inorder


std::cout << "Inorder Traversal: ";
tree.printInorder();

return 0;
}

Cara Membuat nya

1. Pertama buat dulu Struktur Node Untuk mendefinisikan struktur Node yang memiliki
data, pointer ke kiri, dan pointer ke kanan.
2. Lalu buat Kelas BinaryTree yang mendefinisikan kelas BinaryTree dengan anggota
privatenya yang mencakup pointer ke root dan beberapa fungsi, seperti insertRecursive
untuk menambahkan node secara rekursif dan inorderTraversal untuk mencetak pohon
secara inorder.
3. Membuat Fungsi main untuk membuat objek tree, menambahkan beberapa node ke
dalam pohon menggunakan fungsi insert, dan mencetak pohon secara inorder
menggunakan printInorder.
4. Yang terakhir Eksekusi hasil program yang akan mencetak traversal inorder dari binary
tree yang telah dibuat.
NO. 2 Tulislah versi dari potongan code mu sendiri mengenai cara membuat sebuah tree

menggunakan array?

Code Saya

#include <iostream>

struct TreeNode {
int data;
TreeNode* kiri;
TreeNode* kanan;
TreeNode(int value) : data(value), kiri(NULL), kanan(NULL) {}
};

const int MAX_NODES = 15; // Misalnya, untuk tinggi pohon 3


int treeArray[MAX_NODES];

void initializeTree() {
for (int i = 0; i < MAX_NODES; ++i) {
treeArray[i] = -1;
}
}

void insertNode(int value, int index = 0) {


if (index < MAX_NODES) {
if (treeArray[index] == -1) {
treeArray[index] = value;
} else {
// Pergi ke anak kiri jika nilai baru lebih kecil, sebaliknya ke anak kanan
if (value < treeArray[index]) {
insertNode(value, 2 * index + 1); // Anak kiri
} else {
insertNode(value, 2 * index + 2); // Anak kanan
}
}
}
}

int main() {
initializeTree();

insertNode(10);
insertNode(5);
insertNode(15);
insertNode(3);
insertNode(7);
insertNode(12);
insertNode(18);

// Sekarang array treeArray akan berisi representasi BinaryTree.


return 0;
}
Cara Membuat nya

1. Langkah pertama buat dulu Struktur TreeNode Tentukan struktur data untuk
merepresentasikan node binarytree. Setiap node memiliki dua anak (kiri dan kanan) dan
satu nilai.
2. Langkah kedua Deklarasi dan Inisialisasi Array Tentukan array untuk menyimpan
elemen-elemen binarytree. Panjang array sebaiknya mencakup jumlah node yang
dibutuhkan.
3. Langkah ketiga yaitu Inisialisasi tree Isi array dengan nilai default atau nilai yang
menandakan bahwa suatu node tidak ada. Misalnya, bisa menggunakan nilai -1.
4. Langkah keempat Tambahkan Node ke tree Untuk menambahkan node baru ke tree, cari
posisi yang sesuai di dalam array dan masukkan nilainya.
NO. 4 Buatlah fungsi In Order pada binary tree menggunakan konsep recursive?

#include <iostream>

// Struktur simpul pada binary tree


struct Node {
int data;
Node* kiri;
Node* kanan;

Node(int value) : data(value), kiri(NULL), kanan(NULL) {}


};

// Fungsi rekursif untuk melakukan traversal In Order pada binary tree


void inOrderTraversal(Node* root) {
if (root != NULL) {
// Traverse ke kiri
inOrderTraversal(root->kiri);

// Proses data pada simpul saat ini


std::cout << root->data << " ";

// Traverse ke kanan
inOrderTraversal(root->kanan);
}
}

int main() {
// Contoh pembuatan binary tree
Node* root = new Node(1);
root->kiri = new Node(2);
root->kanan = new Node(3);
root->kiri->kiri = new Node(4);
root->kiri->kanan = new Node(5);

// Output hasil traversal In Order


std::cout << "In Order Traversal: ";
inOrderTraversal(root);

return 0;
}
NO 5. Carilah contoh sample program traveling salesman problem dengan menggunakan

Graph

// CPP program to implement traveling salesman


// problem using naive approach.
#include <bits/stdc++.h>
using namespace std;
#define V 4

// implementation of traveling Salesman Problem


int travllingSalesmanProblem(int graph[][V], int s)
{
// store all vertex apart from source vertex
vector<int> vertex;
for (int i = 0; i < V; i++)
if (i != s)
vertex.push_back(i);

// store minimum weight Hamiltonian Cycle.


int min_path = INT_MAX;
do {

// store current Path weight(cost)


int current_pathweight = 0;

// compute current path weight


int k = s;
for (int i = 0; i < vertex.size(); i++) {
current_pathweight += graph[k][vertex[i]];
k = vertex[i];
}
current_pathweight += graph[k][s];

// update minimum
min_path = min(min_path, current_pathweight);

} while (
next_permutation(vertex.begin(), vertex.end()));

return min_path;
}

// Driver Code
int main()
{
// matrix representation of graph
int graph[][V] = { { 0, 10, 15, 20 },
{ 10, 0, 35, 25 },
{ 15, 35, 0, 30 },
{ 20, 25, 30, 0 } };
int s = 0;
cout << travllingSalesmanProblem(graph, s) << endl;
return 0;
}

Anda mungkin juga menyukai