Program Tree

السَّلاَÙ…ُ عَÙ„َÙŠْÙƒُÙ…ْ ÙˆَرَØ­ْÙ…َØ©ُ اللهِ ÙˆَبَرَÙƒَاتُÙ‡ُ


Pada kesempatan kali ini saya akan share tentang program "Tree" yang mana pada program ini akan menampilkan hasil urutan data secara Pre-Order, In-Order, Post-Order, Menghitung tinggi pohon, Menghitung jumlah daun, jumlah data dan lain lainnya...
Okee langsung saja..ini dia source code nya :


#include <iostream>

using namespace std;


struct Node {

int data;

Node *l=NULL, *r=NULL;
};
void insert(Node *&root, int data) { // Menambahkan node
if(root==NULL) {
Node *N = new Node;
N->data = data;
root = N;
cout << data << " has been inserted." << endl;
} else if(data<root->data) {
insert(root->l, data);
} else if(data>root->data) {
insert(root->r, data);
} else if(data==root->data){
cout << data << " exists." << endl;
}

}

void preOrder(Node *&root) { // Menampilkan node secara pre-order
if(root!=NULL) {
cout << root->data << " ";
preOrder(root->l);
preOrder(root->r);
}
}

void inOrder(Node *&root) { // Menampilkan node secara in-order
if(root!=NULL) {
inOrder(root->l);
cout << root->data << " ";
inOrder(root->r);
}
}

void postOrder(Node *&root) { // Menampilkan node secara post-order
if(root!=NULL) {
postOrder(root->l);
postOrder(root->r);
cout << root->data << " ";
}
}

bool nodeExists(Node *root, int data) { // Mengecek node, apakah ada atau tidak
if(root==NULL) return false;
else if(root->data==data) return true;
else if(root->data>data) nodeExists(root->l, data);
else if(root->data<data) nodeExists(root->r, data);
}

int max2(int x, int y) { // Mencari nilai maksimal antara dua nilai
if(x<y) return y;
else return x;
}

int height(Node *root) { // Mencari tinggi pohon
if(root==NULL) {
return 0;
} else {
return 1+max2(height(root->l), height(root->r));
}
}

int countLeafs(Node *root) { // Mencari banyak daun
if(root==NULL) {
return 0;
} else if(root->l==NULL || root->r==NULL) {
return 1;
}
return countLeafs(root->l)+countLeafs(root->r);
}

int sum(Node *root) { // Menjumlahkan data pada semua node
if(root==NULL) {
return 0;
} else {
return root->data+sum(root->l)+sum(root->r);
}
}

void inOrderLeaf(Node *root) { // Menampilkan daun secara in-order
if(root!=NULL) {
inOrderLeaf(root->l);
if(root->l==NULL && root->r==NULL) {
cout << root->data << " ";
}
inOrderLeaf(root->r);
}
}

void postOrderOddNode(Node *root) { // Menampilkan node ganjil
if(root!=NULL) {
postOrderOddNode(root->l);
postOrderOddNode(root->r);
if(root->data%2!=0) {
cout << root->data << " ";
}
}
}

int main() {
Node *root = new Node;
root = NULL;
int option;
do {
system("cls");
cout << endl << "----- TREE -----" << endl << endl;
cout << " [1] Insert" << endl;
cout << " [2] Pre-Order" << endl;
cout << " [3] In-Order" << endl;
cout << " [4] Post-Order" << endl;
cout << " [5] Cek Data" << endl;
cout << " [6] Height" << endl;
cout << " [7Hitung Daun" << endl;
cout << " [8] In-Order Leaf" << endl;
cout << " [9] Post-Order Odd" << endl;
cout << " [10] Jumlah Data" << endl;
cout << " [0] Exit" << endl << endl;
cout << "Masukkan Pilihan ";
cin >> option;
cout << endl;
if(option==1) {
int val;
cout << "Data Baru : ";
cin >> val;
insert(root, val);
} else if(root==NULL && (option==2 || option==3 || option==4 || option==8 || option==9)) {
cout << "Data Kosong!" << endl;
} else if(option==2) {
preOrder(root);
cout << endl;
} else if(option==3) {
inOrder(root);
cout << endl;
} else if(option==4) {
postOrder(root);
cout << endl;
} else if(option==5) {
int data;
cout << "Check Data :";
cin >> data;
cout << nodeExists(root, data);
cout << endl;
} else if(option==6) {
cout << height(root);
cout << endl;
} else if(option==7) {
cout << countLeafs(root);
cout << endl;
} else if(option==8) {
inOrderLeaf(root);
cout << endl;
} else if(option==9) {
postOrderOddNode(root);
cout << endl;
} else if(option==10) {
cout << sum(root);
cout << endl;
} else if(option==0) {
cout << "Exited." << endl;
} else {
cout << "Invalid option!" << endl;
}
cout << endl;
system("pause");
} while(option!=0);
return 0;
}





Sekian dari saya terimakasih sudah membaca~
Previous
Next Post »