Kamis, 21 April 2016

,
Contoh Surat Keterangan Pengalaman Kerja yang Baik – Surat keterangan pengalaman kerja merupakan yang berisi pernyataan dari sebuah perusahaan melalui pemimpin/ atasan perusahaan atau pemimpin di bidang tertentu di perusahaan tersebut, yang ditujukan kepada pegawai yang pernah bekerja di perusahaan/ lembaga/ instansi tersebut.

Surat keterangan pengalaman kerja atau surat pengalaman kerja merupakan salah satu surat yang sangat penting selainsurat keterangan kerja. Surat tersebut biasanya digunakan untuk berbagai hal, salah satunya sebagai bahan untuk melamar pekerjaan. Dengan adanya surat pengalaman kerja yang pernah diberikan oleh perusahaan lama anda, hal tersebut akan menjadi penilaian positif dari perusahaan yang anda lamar.


Contoh Surat Keterangan Pengalaman Kerja
Contoh Surat Pengalaman Kerja

Contoh Surat Keterangan Pengalaman Kerja

PT. MAKMUR NAN JAYA
Jl. Putri Tidur No. 1 Pontianak
Website : www.makmurnanjaya.com, Telp : (0361) 216583, Faks : (0361) 325543
========================================================================

SURAT KETERANGAN PENGALAMAN KERJA
No : 02/HRD/X/2013


Yang bertanda tangan dibawah ini:

Nama                : Cita Citata
Jabatan              : Direktu PT. Makmur Nan Jaya

Menerangkan dengan sesungguhnya bahwa yang bersangkutan dibawah ini:

Nama                 : Hendri Kusnadi
Alamat               : Jl. Pangeran No. 30, Pontianak

Benar telah bekerja pada perusahaan kami terhitung sejak 15 April 2012 sampai dengan 21 Februari 2013 dengan jabatan terakhir yaitu Asisten Manager

Selama menjadi karyawan di perusahaan kami, Saudara Hendri Kusnadi telah menunjukkan dedikasi dan loyalitas terhadap perusahaan dan tidak pernah melakukan tindakan yang merugikan perusahaan, dan dalam hal ini yang bersangkutan mengundurkan diri atas kemauannya sendiri.

Kami ucapkan terimakasih dan besar harapan kami semoga yang bersangkutan lebih sukses lagi untuk kedepannya.

Demikian surat keterangan ini dibuat agar dapat digunakan sebagai bahan pertimbangan dan sebagaimana mestinya.


                                                                                                           Pontianak, 18 Maret 2013



                                                                                                                  Cita Citata                                                                                                                                      Direktur


Demikian arikel mengenai Contoh Surat Keterangan Pengalaman Kerja yang Baik, semoga dapat bermanfaat dan menjadi bahan referensi anda yang membutuhkan atau mencari hal tersebut.
,
Syarat/ Prosedur dan Cara Membuat atau Mengurus SKCK  merupakan salah satu hal penting yang perlu kita ketahui. SKCK (Surat Keterangan Catatan Kepolisian) atau sering juga disebut dengan surat kelakukan baik merupakan salah satu syarat yang harus dimiliki untuk keperluan berbagai macam hal. Beberapa hal yang memerlukan SKCK seperti melamar pekerjaan, melamar menjadi CPNS, melakukan registrasi sekolah/ kuliah dsb.

Dimanakah Saya Dapat Membuat dan Memperoleh SKCK atau Surat Kelakuan Baik?

Untuk memperoleh SKCK ini anda perlu melalui beberapa tahap dan ditahap akhir atau saatnya mendapatkan SKCK yaitu di polres tempat anda tinggal.
Cara membua SKCK
Cara membua SKCK
Bagaimana Prosedur atau Langkah Dalam Membuat SKCK?

1. Mengurus surat pengantar pembuatan SKCK di RT/RW

Untuk prosedur ini anda hanya perlu mendatangi RT/RW tempat anda tinggal dan menyatakan kepada pengurus RT/RW bahwa anda ingin membuat SKCK, dalam tahap ini tidak ada syarat seperti KTP dsb yang diperlukan.

2. Mengurus surat pengantar pembuatan SKCK di Kelurahan

Setelah mengurus surat pengantar di RT/RW kemudian anda perlu mengurus surat pengantar di kelurahan tempat anda tinggal. Caranya yaitu memberikan surat pengantar dari RT/RW ke pengurus kelurahan kemudian ditambah satu syarat yaitu Fotokopi KTP milik anda ditambah membayar uang administrasi.
Baca juga Contoh surat keterangan pengalaman kerja yang baik

3. Mengurus surat pengantar pembuatan SKCK di Kecamatan

Di tahap kecamatan anda juga perlu memberikan surat pengantar dari kelurahan ke pengurus kantor kecamatan, kemudian memberikan syarat sebagai berikut:

- Fotocopy KTP = 1 Lembar
- Fotocopy KK (Kartu Keluarga)= 1 lembar
- Fotocopy Akta Kelahiran = 1 Lembar
- Pas Foto Warna berukuran 4x6 = 1 Lembar
- Biaya Administrasi = Tergantung wilayah anda

4. Mengurus surat pengantar pembuatan SKCK di POLSEK (Membuat SKCK Kondisional)

Pada tahap ini anda akan membuat SKCK Kondisional yang dapat anda peroleh dengan mengurusnya di kepolisian sektor terdekat di kecamatan anda kemudian menyerahkan persyaratan sebagai berikut:

- Surat Pengantar pembuatan SKCK dari kecamatan
- Fotocopy KTP = 2 Lembar
- Pas Foto Warna berukuran 4x6 = 6 Lembar
- Blanko SKCK yang dapat diperoleh dan diisi di polsek tersebut
- Biaya Administrasi = Tergantung wilayah anda

5. Mengurus SKCK/ Surat Kelakuan Baik di Polres Kota Anda

Dalam tahap terkahir ini, dimana anda akan membuat dan mendapatkan SKCK anda, hal yang perlu dilakukan yaitu melengkapi syarat berikutr untuk memberikannya kepada petugas polres tersebut.

- Surat Pengantar dari kecamatan 
- Fotocopy KTP = 2 Lembar
- Fotocopy Akta Kelahiran = 1 Lembar
- Pas Foto Warna berukuran 4x6 = 6 Lembar
- Biaya Administrasi = Tergantung wilayah anda
- Blanko SKCK yang dapat diperoleh dan diisi di polsek tadi
- Map untuk berkas pembuatan SKCK berwarna kuning (biasanya terdapat di koperasi polres)
- Biaya administrasi= tergantung polres tersebut

Hal – hal yang saya sampaikan diatas merupakan persyaratan dasar yang biasanya digunakan disetiap daerah dalam hal pengurusan pembuatan SKCK atau surat kelakuan baik dari kepolisian ini. Akan tetapi hal tersebut dapat saja berbeda di daerah tertentu, oleh karena itu usahakan untuk mempersiapkan dokumen atau persyaratan yang lebih dari yang saya terterakan diatas serta jangan malu untuk bertanya di polsek terdekat untuk informasi lebih lanjut mengenai Syarat dan Cara Membuat / Mengurus SKCK atau Surat Kelakuan Baik ini.
,
Pada kesempatan kali ini saya akan berbagi mengenai penyebab google chrome lambat (lemot) dan cara mengatasi atau meningkatkan kecepatan google chrome tersebut. Seperti yang kita tahu bahwa google chrome merupakan salah satu browser yang memiliki fitur yang sangat lengkap. Browser besutan google ini menjadi salah satu browser favorit banyak orang (termasuk saya).

Bukan tanpa alasan google chrome bisa menjadi browser yang sangat digemari dan banyak digunakan, akan tetapi hal itu karena fitur dan performanya yang sangat baik. Menurut saya sendiri google chrome memiliki fitur ekstensi yang tidak kalah jika dibandingkan dengan mozilla (add- ons). Selain itu salah satu kelebihan google chrome adalah kecepatan aplikasi dan browsingnya yang sangat baik.
Google chrome
Google chrome
Akan tetapi browser google chrome yang telah lama kita gunakan terkadang memiliki performa yang sangat menurun dan membuat kita kecewa. Contohnya seperti google chrome jadi lemot dan lambat serta sering ngadat saat digunakan, bahkan tak jarang browser google chrome yang kita miliki sangat lama untuk dibuka dan dijalankan.

Nah, pada kesempatan yang baik ini saya langsung akan memberikan cara mengatasinya yang didalamnya dapat anda pahami juga hal apa saja yang menyebabkan browser google chrome anda lemot, ngadat dan lambat.

Hal Yang Menyebabkan Google chrome Bermasalah dan Cara Mengatasinya

Ekstensi yang Terinstall/Terpasang di Program

Seperti yang kita ketahui sebelumnya bahwa ekstensi merupakan salah satu fitur yang sangat berguna di google chrome. Akan tetapi tahukah anda ekstensi yang terlalu banyak akan sangat berpengaruh terhadap performa google chrome?, oleh karena itu usahakan untuk menghapus atau uninstall beberapa ekstensi yang anda anggap kurang berguna dan terlalu memberatkan google chrome anda. Untuk cara meng uninstallnya jika anda tidak tahu silahkan baca Cara Uninstall/Disable/ Melepas Ekstensi pada Google Chrome

Plugins Yang Terpasang ke Google Chrome

Selain ekstensi, plugin merupakan salah satu fitur yang sangat bermanfaat juga. Karena dengan adanya plugin kita dapat mengakses banyak jenis konten di internet seperti Video, Lagu, Efek, Game Online dan lain – lain. Akan tetapi terlalu banyak plugin yang terpasang sebenarnya juga menjadi penyebab google chrome menjadi lemot dan lambat bahkan sering ngadat. Oleh karena itu usahakan mematikan atau disable beberapa plugin yang anda anggap tidak berguna atau kurang berguna. Untuk caranya silahkan lihat Cara Disable/ Melepas Plugin di Google Chrome

Membersihkan Data Browsing (Cookies, Cache dll)

Setiap anda melakukan browsing di internet menggunakan browser google chrome pastinya selalu ada data yang tersimpan dan bertambah pada google chrome anda. Beberapa contoh data yang tersimpan secara otomatis adalah history (riwayat) penelusuran, Riwayat download, Cookies, cache dan lain – lain yang sebenarnya berguna untuk anda yang ingin mengakses situs yang pernah anda kunjungi atau melihat daftar download anda. Akan tetapi data tersebut juga sangat berpengaruh dalam mengurangi kecepatan browser. Oleh karena itu usahakan membersihkan data browser tersebut secara rutin dengan Cara Membersihkan data browsing.

Kecepatan Koneksi Internet

Selain browser, koneksi internet merupakan salah satu hal yang dibutuhkan untuk dapat berselancar di internet, oleh karena itu menurut saya koneksi internet sedikit berpengaruh pada kinerja dan performa sebuah browser. Karena Sebuah browser akan bekerja lebih berat jika tanpa sebuah koneksi internet yang baik. Untuk memaksimalkan koneksi internet silahkan baca Cara Mempercepat Koneksi Internet

Demikian artikel kali ini mengenai Penyebab dan Cara Mengatasi Google Chrome Lemot (Ngadat), Semoga bermanfaat
,
Mengirim fax melalui internet atau secara online merupakan terobosan yang sangat mempermudah kita untuk mengirim berkas/ file tanpa menggunakan mesin fax. Untuk dapat mengirim fax tanpa menggunakan mesin fax sebenarnya ada banyak cara, akan tetapi kali ini saya akan memberikan cara mengirim fax melalui web penyedia layanan pengiriman fax.

Sebelum melanjutkan ke cara mengirim fax secara online, mari kita lihat dulu beberapa kelebihan/ keuntungan dengan mengirim fax melalui internet ini:

1. Tanpa mengeluarkan biaya atau gratis
2. Fax dapat dikirim kapan dan dimana saja
3. Kita dapat memonitor keamanan fax yang kita kirim

Saat ini ada banyak sekali website yang dapat digunakan untuk mengirim dan menerima FAX dari semua negara akan tetapi banyak juga diantaranya yang berbayar. Karena saya tahu kita menyukai sesuatu yang gratis kali ini say akan memberikan beberapa website yang dapat anda gunakan untuk mengirim atau menerima fax secara gratis, berikut beberapa website tersebut
baca juga: Cara mengetahui ip address kita

1. FaxZero (faxzero.com)
2. PamFax (pamfax.biz)
3. MyFax (myfax.com)
4. PopFax (popfax.com)
5. SuperFax (knowlarity.com/sf/)

Syarat untuk mengirim fax melalui situs yang telah saya berikan diatas sangatlah mudah, yaitu kalian hanya perlu melakukan pendaftaran sebagai member terlebih dahulu (sign up) kemudian anda langsung dapat menggunakan fitur mengirim fax nya. Untuk mempermudah saya akan memberikan contohnya

Panduan mengirim fax melalui website PamFax

1. Setelah mendaftar dan masuk ke dalam akun PamFax anda, silahkan klik menu ‘Send a fax’ seperti gambar dibawah
Cara mengirim fax lewat internet
Cara mengirim fax lewat internet
2. Selanjutnya pilih ‘Send a File’ dan upload file yang ingin anda kirim
3. Kemudian pilih negara tujuan dan masukan nomor tujuan anda serta berita fax yang anda inginkan.
4. Terakhir klik ‘Next’  untuk mengirim.
Cara mengirim fax secara online
Cara mengirim fax secara online
Dengan adanya kemudahan yang disediakan oleh perkembangan teknologi kita harus dapat memanfaatkannya dengan baik dan bijaksana. Demikian artikel saya kali ini mengenai Cara Mengirim Fax Lewat Internet (Online/ Tanpa Mesin Fax), semoga dapat bermanfaat.
,
Langkah mengganti template kita berdasarkan template yang kita download
  • Masuk atau Login ke blogger anda
  • Klik menu “Template”  

Mengganti Template

  • Klik “Cadangkan/ Pulihkan” atau “Backup/ Restore” yang terdapat di sebelah kanan atas
  •  Setelah menekan “Cadangkan/ Pulihkan” akan muncul tampilan seperti berikut ini, selanjutnya anda dapat mem backup template yang anda gunakan sekarang terlebih dahulu dengan klik “Unduh Template Lengkap” jika anda menginginkannya dan sebagai antisipasi jika suatu saat anda ingin merestorenya atau mengembalikan tampilan template anda, jika telah selesai pilih “Telusuri” dan pilih Template yang telah anda unduh sebelumnya dan ingin anda gunakan.

Cara mengganti template
  • Tunggu proses pemasangan selesai dan template unduhan anda berhasil terpasang dan silahkan lihat hasilnya.

Mengganti template blogger adalah hal yang cukup mudah dan menyenangkan tetapi alangkah baiknya kita jangan terlalu sering melakukannya karena akan berpengaruh terhadap pengindexan terhadap blog kita, jika anda tidak ingin menggunakan template hasil download anda bisa gunakan fitur- fitur tambahan ini yang cukup penting untuk blog anda seperti “Artikel terkait seo” dan "Membuat scroll pada widget".

Demikian Cara Mengganti Template Blogspot/ Blogger dengan Mudah ini, Terima kasih atas perhatiannya dan mohon maaf atas segala kekurangannya.

Minggu, 17 April 2016

,
PENGERTIAN TREE
Kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk layakya struktur sebuah pohon. Struktur pohon adalah suatu cara merepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang mirip sebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan node-node dari atas ke bawah. Suatu struktur data yang tidak linier yang menggambarkan hubungan yang hirarkis (one-to-many) dan tidak linier antara elemen-elmennya.

ISTILAH DALAM TREE


Ilustrasi alogaritma tree

Keterangan :
Ancesor (F) = C, A
Descendant(C) = F,G
Parent (D) = B
Child (A) = B, C
Sibbling (F) = G
Size = 7
Height = 3
Root = A
Leaf = D,E,F,G
Degree = 2

JENIS-JENIS TREE
BINARY TREE
Tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua sub pohon dan kedua subpohon harus terpisah.
Kelebihan struktur Binary Tree :
-          Mudah dalam penyusunan algoritma sorting
-          Searching data relatif cepat
-          Fleksibel dalam penambahan dan penghapusan data


FULL BINARY TREE
Semua node, kecuali leaf pasti memiliki 2 anak dan tiap subpohon memiliki panjang path yang sama.





COMPLETE BINARY TREE
 Tree yang mirip dengan full binary tree, tapi tiap subtree boleh memiliki panjang path yang berbeda dan tiap node (kecuali leaf) memiliki 2 anak.


SKEWED BINARY TREE
Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak.


IMPLEMENTASI PROGRAM TREE
Deklarasi Struct







Deklarasi Variabel



OPERASI
Create: membentuk sebuah tree baru yang kosong.

Insert: menambah node ke dalam Tree.
Jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan, sebaliknya jika lebih kecil maka akan diletakkan di node sebelah kiri. Untuk data pertama akan menjadi elemen root.

















PreOrder: cetak node yang dikunjungi, kunjungi left, kunjungi right








InOrder: kunjungi left, cetak node yang dikunjungi, kunjungi right








PostOrder: kunjungi left, kunjungi right, cetak node yang dikunjungi








Program tree :
//header file
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

//pendeklarasian struct sebuah tree awal
struct Node{
      int data;
      Node *kiri;
      Node *kanan;
};

//fungsi untuk menambahkan node baru
void tambah(Node **rootint databaru)
{
      //jika root masih kosong
      if((*root) == NULL)
      {
            //pembuatan node baru
            Node *baru;
            //pengalokasian memori dari node yang telah dibuat
            baru = new Node;
            //inisialisasi awal node yang baru dibuat
            baru->data = databaru;
            baru->kiri = NULL;
            baru->kanan = NULL;
            (*root) = baru;
            (*root)->kiri = NULL;
            (*root)->kanan = NULL;
            printf("Data bertambah!");
      }
     //jika data yang akan dimasukkan lebih kecil daripada elemen root, maka akan diletakkan di node sebelah kiri.
      else if(databaru<(*root)->data)
            tambah(&(*root)->kiri, databaru);
     //jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan
      else if(databaru>(*root)->data)
            tambah(&(*root)->kanan, databaru);
     //jika saat dicek data yang akan dimasukkan memiliki nilai yang sama dengan data pada root
      else if(databaru == (*root)->data)
            printf("Data sudah ada!");
}

//fungsi yang digunakan untuk mencetak tree secara preOrder
void preOrder(Node *root)
{
      if(root != NULL){
            printf("%d "root->data);
            preOrder(root->kiri);
            preOrder(root->kanan);
      }
}

//fungsi yang digunakan untuk mencetak tree secara inOrder
void inOrder(Node *root)
{
      if(root != NULL){
            inOrder(root->kiri);
            printf("%d "root->data);
            inOrder(root->kanan);
      }
}

//fungsi yang digunakan untuk mencetak tree secara postOrder
void postOrder(Node *root)
{
      if(root != NULL){
            postOrder(root->kiri);
            postOrder(root->kanan);
            printf("%d "root->data);
      }
}

//fungsi utama
int main()
{
      //deklarasikan variabel
      int pil, data;// c;
      Node *pohon; //*t;
      pohon = NULL//inisialisasi node pohon
      //perulangan do-while
      do
      {
            system("cls"); //bersihkan layar
            printf("\t#PROGRAM TREE C++#");
            printf("\n\t==================");
            printf("\nMENU");
            printf("\n----\n");
            printf("1. Tambah\n");
            printf("2. Lihat pre-order\n");
            printf("3. Lihat in-order\n");
            printf("4. Lihat post-order\n");
            printf("5. Exit\n");
            printf("Pilihan : ");
            scanf("%d", &pil);
            switch(pil)
            {
            //jika pil bernilai 1
            case 1 :
                  printf("\nINPUT : ");
                  printf("\n-------");
                  printf("\nData baru : ");
                  scanf("%d", &data);
                  //panggil fungsi untuk menambah node yang berisi data pada tree
                  tambah(&pohon, data);
                  break;
                 
            //jika pil bernilai 2
            case 2 :
                  printf("\nOUTPUT PRE ORDER : ");
                  printf("\n------------------\n");
                  if(pohon!=NULL)
                       //panggil fungsi untuk mencetak data secara preOrder
                        preOrder(pohon);
                  else
                        printf("Masih kosong!");
                  break;
                 
            //jika pil bernilai 3
            case 3 :
                  printf("\nOUTPUT IN ORDER : ");
                  printf("\n------------------\n");
                  if(pohon!=NULL)
                       //panggil fungsi untuk mencetak data secara inOrder
                        inOrder(pohon);
                  else
                        printf("Masih kosong!");
                  break;
           
            //jika pil bernilai 4
            case 4 :
                  printf("\nOUTPUT POST ORDER : ");
                  printf("\n------------------\n");
                  if(pohon!=NULL)
                       //panggil fungsi untuk mencetak data secara postOrder
                        postOrder(pohon);
                  else
                        printf("Masih kosong!");
                  break;
            }
            _getch();
      }while(pil != 5); //akan diulang jika input tidak samadengan 5
      return EXIT_FAILURE;
}



Penjelasan :
·         Pada program ini dideklarasikan sebuah struct yang didalamnya terdapat tiga field,
typedef struct Node{
   int data;
   Node *kiri;
   Node *kanan;
};
Field pertama : variabel bertipe data integer, digunakan untuk menyimpan data pada node.
Field kedua   : variable pointer yang bertipe data abstrak (NODE), digunakan untuk menunjuk node anak(child) sebelah kiri.
Field ketiga  : variabel pointer yang bertipe data abtrak (NODE), digunakan untuk menunjuk node anak(child) sebelah kanan.
·         Pada Tree terdapat operasi Traverse yaitu operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali. Dalam program ini digunakan tiga tranverse, yakni
PreOrder   : node yang dikunjungi (induk), kunjungi left, kunjungi right
InOrder     : kunjungi left, node yang dikunjungi (induk), kunjungi right
PostOrder : kunjungi left, kunjungi right, node yang dikunjungi (induk)
·         Pada program ini dideklarasikan beberapa prorotype fungsi, yakni
1. void tambah(Node **root, int databaru)-> fungsi ini digunakan untuk melakukan penambahan node yang berisi data/nilai pada tree. Parameternya adalah variabel pointer bertipe data abstrak yaitu node dan variabel bertipe data integer(untuk menyimpan data yang diinput).
2. void preOrder(Node *root)-> fungsi ini digunakan untuk mengunjungi node secara pre-Order sekaligus mencetak isi node yang telah dikunjungi secara urut dimulai dari kunjungan yang pertama.
3. void inOrder(Node *root)-> fungsi ini digunakan untuk mengunjungi node secara in-Order sekaligus mencetak isi node yang telah dikunjungi secara urut dimulai dari kunjungan yang pertama.
4. void postOrder(Node *root)-> fungsi ini digunakan untuk mengunjungi node secara post-Order sekaligus mencetak isi node yang telah dikunjungi secara urut dimulai dari kunjungan yang pertama.

Algoritma : 
1. Mulai
2. Selanjutnya deklarasikan variabel yang akan  digunakan untuk melakukan penyimpanan dan pemrosesan data, serta diguanakan sebagai parameter fungsi.
                  int pil, data;
                  Node *pohon;
3. Selanjutnya jalankan perulangan do-while yang memiliki kondisi selama nilai  variabel pil dari input user tidak bernilai 5.
4. Tampilkan judul program dan menu program. Jalankan operasi kondisi switch case .
  Jika user memilih menu 1, maka  semua pernyataan yang ada didalam case 1 akan dijalankan.
                        printf("\nINPUT : ");
            printf("\n-------");
            printf("\nData baru : ");
            scanf("%d", &data);
            tambah(&pohon, data);
            break;
Tampilkan string, kemudian minta user menginputkan suatu bilangan yang ingin ditambah pada node tree. Bilangan yang diinputkan user disimpan dalam alamat memori variabel ‘data’ dan nantinya digunakan sebagai parameter dari fungsi “tambah(&pohon, data)”.
                        Program akan memanggil fungsi ‘tambah(&pohon, data)’. Berikut fungsi yang dipanggil dan dijalankan oleh program : 
void tambah(Node **root, int databaru)
{
      if((*root) == NULL)
      {
            Node *baru;
            baru = new Node;
            baru->data = databaru;
            baru->kiri = NULL;
            baru->kanan = NULL;
            (*root) = baru;
            (*root)->kiri = NULL;
            (*root)->kanan = NULL;
            printf("Data bertambah!");
      }
      else if(databaru<(*root)->data)
            tambah(&(*root)->kiri, databaru);
      else if(databaru>(*root)->data)
            tambah(&(*root)->kanan, databaru);
      else if(databaru == (*root)->data)
            printf("Data sudah ada!");
}

-          Input data pertama adalah 40
Saat pertama kali fungsi dipanggil akan dijalankan operasi kondisi if((*root) == NULL) atau if((*(&pohon)) == NULL)Karena kondisi bernilai benar maka pernyataan yang ada didalamnya akan dijalankan, yaitu pendeklarasian node baru bernama ‘baru’, kemudian dialokasikan memori untuk node yang baru dibuat.
Selanjutnya, dilakukan proses inisialisasi pada node yang baru dibuat 
baru->data = databaru; -> baru-> data diisi nilai dari bilangan yang diinput (nilai dari variabel data) yaitu berisi 40.
baru->kiri = NULL;
baru->kanan = NULL;
//Node baruàkiri dan baru Ã  kanan diinisialisasi bernilai NULL, artinya bahwa node yang baru dibuat belum memiliki anak(child).

Kemudian node yang baru dibuat (dengan nilai 40) dijadikan sebagai root melalui syntax,
   (*root) = baru; atau (*(&pohon)) = baru;
   (*root)->kiri = NULL; atau (*(&pohon))-> kiri = NULL;
   (*root)->kanan = NULL; atau (*(&pohon))-> kanan = NULL;
//Sama halnya dengan pernyataan sebelumnya, Node (*(&pohon))-> kiri dan(*(&pohon))-> kanan diinisialisasi bernilai NULL, artinya bahwa node yang baru dibuat belum memiliki anak(child).
Setelah pembuatan node baru pada tree selesai dilakukan, akan tercetak string pada layar “Data bertambah!”.

-          Input data kedua adalah 25
Saat pertama kali fungsi dipanggil akan dilakukan pengecekan melalui operasi kondisi. Karena kondisi pertama bernilai salah maka kondisi selanjutnya dijalankan. Kondisi else if(databaru<(*root)->data) dicek dan ternyata bernilai benar (25 lebih kecil daripada data pada root, yakni 40) maka pernyataan yang ada didalamnya akan dijalankan, yaitu memanggil fungsi tambah(&(*root)->kiri, databaru)Perhatikan parameter yang digunakan untuk memanggil fungsi!!!.
Selanjutnya, akan dipanggil prototype fungsi tambah(). Akan dilakukan pengecekan kondisi  if((*root) == NULL) atau if((*(&(*root)->kiri) == NULL)Ternyata kondisi bernilai benar ( (*root)->kiri bernilai NULL;,pernyataan ini diperoleh dari pemanggilan fungsi sebelumnya), maka semua pernyataan yang ada didalamnya akan dijalankan, yakni pendeklarasian node baru bernama ‘baru’, kemudian dialokasikan memori untuk node yang baru dibuat.

Selanjutnya, dilakukan proses inisialisasi pada node yang baru dibuat baru->data = databaru; -> baru->data diisi nilai dari bilangan yang diinput (nilai dari variabel data) yaitu berisi 25.
baru->kiri = NULL;
baru->kanan = NULL;
//Node baruàkiri dan baru Ã  kanan diinisialisasi bernilai NULL, artinya bahwa node yang baru dibuat belum memiliki anak(child).

Kemudian node yang baru dibuat (dengan nilai 25) dijadikan sebagai root melalui syntax,
   (*root) = baru; atau *(&(*root)->kiri)  = baru;
   (*root)->kiri = NULL; atau *(&(*root)->kiri)-> kiri = NULL;
   (*root)->kanan = NULL; atau *(&(*root)->kiri)->kanan =NULL;
//Sama halnya dengan pernyataan sebelumnya, Node *(&(*root)->kiri)-> kiridan *(&(*root)->kiri)->kanan diinisialisasi bernilai NULL, artinya bahwa node yang baru dibuat belum memiliki anak(child).
Setelah pembuatan node baru pada tree selesai dilakukan, akan tercetak string pada layar “Data bertambah!”.

-          Input data ketiga adalah 50
Saat pertama kali fungsi dipanggil akan dilakukan pengecekan melalui operasi kondisi. Karena kondisi pertama dan kedua bernilai salah maka kondisi selanjutnya dijalankan. Kondisi else if(databaru>(*root)->data) dicek dan ternyata bernilai benar (50 lebih besar daripada data pada root, yakni 40) maka pernyataan yang ada didalamnya akan dijalankan, yaitu memanggil fungsi tambah(&(*root)->kanan, databaru);Perhatikan parameter yang digunakan untuk memanggil fungsi!!!.
Selanjutnya, akan dipanggil prototype fungsi tambah(). Akan dilakukan pengecekan kondisi  if((*root) == NULL) atau if((*(&(*root)->kanan) == NULL)Ternyata kondisi bernilai benar ( (*root)->kanan bernilai NULL;,pernyataan ini diperoleh dari pemanggilan fungsi sebelumnya), maka semua pernyataan yang ada didalamnya akan dijalankan, yakni pendeklarasian node baru bernama ‘baru’, kemudian dialokasikan memori untuk node yang baru dibuat.

Selanjutnya, dilakukan proses inisialisasi pada node yang baru dibuat  baru->data = databaru; -> baru->data diisi nilai dari bilangan yang diinput (nilai dari variabel data) yaitu berisi 50.
baru->kiri = NULL;
baru->kanan = NULL;
//Node baruàkiri dan baru Ã  kanan diinisialisasi bernilai NULL, artinya bahwa node yang baru dibuat belum memiliki anak(child).

Kemudian node yang baru dibuat (dengan nilai 50) dijadikan sebagai root melalui syntax,
   (*root) = baru; atau *(&(*root)->kanan)  = baru;
   (*root)->kiri = NULL; atau *(&(*root)->kanan)-> kiri = NULL;
   (*root)->kanan = NULL; atau *(&(*root)->kanan)->kanan = NULL;
//Sama halnya dengan pernyataan sebelumnya, Node *(&(*root)->kanan)-> kiridan *(&(*root)->kanan)->kanan diinisialisasi bernilai NULL, artinya bahwa node yang baru dibuat belum memiliki anak(child).

Setelah pembuatan node baru pada tree selesai dilakukan, akan tercetak string pada layar “Data bertambah!”.
Penjelasan syntax diatas adalah penjelasan bagaimana syntax bisa melakukan penambahan node dan penempatkannya di child bagian kiri ataukah kanan.
TREE YANG AKAN TERBENTUK JIKA SEMUA DATA TELAH SELESAI DIINPUT:



-          Input data keempat adalah 10
1. Data baru (10) dibandingkan dengan root 40. Dilakukan pengecekan kondisi,  karena 10 lebih kecil dari 40 maka akan dipanggil fungsi tambah(&(*root)->kiri, databaru)Parameter pada fungsi diubah menjadi &(*root)->kiri karena digunakan untuk menggeser posisi root ke 25.
2. Kemudian data baru (10) dibandingkan dengan root 25. Dilakukan pengecekan kondisi, karena 10 lebih kecil dari 25 maka akan dipanggil fungsi tambah(&(*root)->kiri, databaru); karena setelah penggeseran posisi root tadi maka parameter fungsinya berubah menjadi tambah(&(*(&(*root)->kiri))->kiri, databaru).
3. Karena databaru (10) bernilai lebih kecil maka akan dilakukan pendeklarasian sebagai node baru dan node baru ini akan menjadi child kiri dari node root 25.

-          Input data kelima(30), keenam(45), dan ketujuh(60) memiliki algoritma yang sama dengan input data keempat dengan sedikit penyesuaian.

Jika user memilih menu 2, maka  semua pernyataan yang ada didalam case 2 akan dijalankan.
PreOrder   : node yang dikunjungi (induk), kunjungi left, kunjungi right
printf("\nOUTPUT PRE ORDER : ");
      printf("\n------------------\n");
      if(pohon!=NULL)
            preOrder(pohon);
      else
            printf("Masih kosong!");
Saat pertama kali pernyataan yang ada dalam case 2 dijalankan, maka yang akan dilakukan program adalah melakukan pengecekan kondisi apakah pohon bernilai NULL? Jika pohon bernilai NULL artinya belum ada data sama sekali sehingga akan ditampilkan string “Masih kosong”.
                        Sebaliknya, jika pohon tidak sama dengan NULL, artinya sudah terbentuk node/ tree maka akan dipanggil fungsi “preOrder(pohon)”. Berikut fungsi yang dipanggil dan dijalankan oleh program :
//fungsi pertama
void preOrder(Node *root)
{
      if(root != NULL){
            printf("%d ", root->data);
            preOrder(root->kiri);
            preOrder(root->kanan);
      }
}
                        Saat fungsi ini dipanggil maka akan dicek apakah kondisi bernilai NULL artinya root belum terbentuk. Jika root tidak sama dengan NULL, artinya root sudah terbentuk maka pernyataan didalamnya akan dijalankan.
Algoritma fungsi pre Order :
1. Mencetak data yang berada pada root, yaitu 40.
2. Memanggil fungsi “preOrder(root->kiri)Perhatikan parameternya adalah rootàkiri. Fungsi yang dipanggil,
//fungsi kedua
void preOrder(Node *(root->kiri)) //parameter berganti
{
               if(root != NULL){
              printf("%d ", (root->kiri)->data);
              preOrder((root->kiri)->kiri);
              preOrder((root->kiri)->kanan);
              }
}
3. Mencetak data yang berada pada rootàkiri, yaitu 25.
4. Memanggil fungsi “preOrder((root->kiri)->kiri)”. Perhatikan parameternya adalah (rootà kiri)àkiri artinya menunjuk ke child sebelah kiri yang dimiliki node rootàkiri atau child kiri dari 25. Fungsi yang dipanggil,
//fungsi ketiga
void preOrder(Node *((root->kiri)->kiri)) //parameter berganti
{
      if(root != NULL){
            printf("%d ", ((root->kiri)->kiri)->data);
            preOrder(((root->kiri)->kiri)->kiri);
            preOrder(((root->kiri)->kiri)->kanan);
      }
}
5. Mencetak data pada (rootàkiri)àkiri, yaitu 10.
6. Memanggil fungsi “preOrder(((root->kiri)->kiri)->kiri)”. Perhatikan parameternya adalah ((rootàkiri)à kiri)àkiri artinya menunjuk ke child sebelah kiri yang dimiliki node (rootàkiri)à kiri atau child kiri dari 10. Fungsi yang dipanggil,
//fungsi keempat
void preOrder(Node *(((root->kiri)->kiri)->kiri)) //parameter berganti
{
      if(root != NULL){
            printf("%d ", (((root->kiri)->kiri)->kiri)->data);
            preOrder((((root->kiri)->kiri)->kiri)->kiri);
            preOrder((((root->kiri)->kiri)->kiri)->kanan);
      }
}
7. Karena saat dicek kondisi yang berada pada fungsi keempat tidak terpenuhi maka pernyataan yang ada didalamnya diabaikan, kemudian keluar dari fungsi keempat  menuju ke fungsi yang ada satu tingkat lebih luar dari fungsi keempat, yaitu fungsi ketiga.
            Pada fungsi ketiga, compiler akan menjalankan pernyataan selanjutnya yakni memanggil fungsi preOrder(((root->kiri)->kiri)->kanan);. Karena saat dicek kondisi yang berada pada fungsi keempat tidak terpenuhi maka pernyataan yang ada didalamnya diabaikan, kemudian keluar dari fungsi ketiga  menuju ke fungsi yang ada satu tingkat lebih luar dari fungsi ketiga, yaitu fungsi kedua.
8. Pada fungsi kedua compiler akan menjalankan pernyataan selanjutnya, yakni memanggil fungsi “preOrder((root->kiri)->kanan)”. Perhatikan parameternya adalah (rootà kiri)àkanan artinya menunjuk ke child sebelah kanan yang dimiliki node rootà kiri atau child kanan dari 25. Fungsi yang dipanggil,
//fungsi kelima
void preOrder(Node *((root->kiri)->kanan)) //parameter berganti
{
            if(root != NULL){
            printf("%d ", ((root->kiri)->kanan)->data);
            preOrder(((root->kiri)->kanan)->kiri);
            preOrder(((root->kiri)->kanan)->kanan);
            }
        }
9.  Mencetak data pada (rootàkiri)àkanan, yaitu 30.
10. Memanggil fungsi “preOrder(((root->kiri)->kanan)->kiri)”. Perhatikan parameternya adalah ((rootàkiri)à kanan)àkiri artinya menunjuk ke child sebelah kiri yang dimiliki node (rootàkiri)à kanan atau child kiri dari 30. Fungsi yang dipanggil,
//fungsi keenam
void preOrder(Node *(((root->kiri)->kanan)->kiri)) //parameter berganti
{
      if(root != NULL){
            printf("%d ", (((root->kiri)->kanan)->kiri)->data);
            preOrder((((root->kiri)->kanan)->kiri)->kiri);
            preOrder((((root->kiri)->kanan)->kiri)->kanan);
      }
}
11. Karena saat dicek kondisi yang berada pada fungsi keenam tidak terpenuhi maka pernyataan yang ada didalamnya diabaikan, kemudian keluar dari fungsi keenam  menuju ke fungsi yang ada satu tingkat lebih luar dari fungsi keenam, yaitu fungsi kelima.
                Pada fungsi ketiga, compiler akan menjalankan pernyataan selanjutnya yakni memanggil fungsi preOrder(((root->kiri)->kanan)->kanan);. Karena saat dicek kondisi yang berada pada fungsi keenam tidak terpenuhi maka pernyataan yang ada didalamnya diabaikan, kemudian keluar dari fungsi kelima  menuju ke fungsi yang memiliki tingkat lebih luar dari fungsi kelima, yaitu fungsi pertama.
12. Pada fungsi pertama compiler akan menjalankan pernyataan selanjutnya, yakni memanggil fungsi “preOrder(root->kanan)”. Untuk algoritma pemanggilan rootàkanan, sama dengan pemanggilan rootàkiri.
13. Jika semua node telah dikunjungi dan dat telah dicetak maka Output = 40, 25,10,30,50,45,60.

Jika user memilih menu 3, maka  semua pernyataan yang ada didalam case 3 akan dijalankan.
InOrder     : kunjungi left, node yang dikunjungi (induk), kunjungi right
printf("\nOUTPUT IN ORDER : ");
printf("\n------------------\n");
if(pohon!=NULL)
      inOrder(pohon);
else
       printf("Masih kosong!");
break;
       Saat pertama kali pernyataan yang ada dalam case 3 dijalankan, maka yang akan dilakukan program adalah melakukan pengecekan kondisi apakah pohon bernilai NULL? Jika pohon bernilai NULL artinya belum ada data sama sekali sehingga akan ditampilkan string “Masih kosong”.
   Sebaliknya, jika pohon tidak sama dengan NULL, artinya sudah terbentuk node/ tree maka akan dipanggil fungsi “inOrder(pohon)”Untuk algoritma inOrder hampir mirip dengan pre Order yaitu tetap menggunakan rekursif bersarang, dimana fungsi rekursif yang berada di paling dalam dikerjakan sampai selesai terlebih dahulu, kemudian baru fungsi yang ada diluar dikerjakan.

Jika user memilih menu 4, maka  semua pernyataan yang ada didalam case 4 akan dijalankan.
PostOrder : kunjungi left, kunjungi right, node yang dikunjungi (induk)
printf("\nOUTPUT POST ORDER : ");
printf("\n------------------\n");
if(pohon!=NULL)
       postOrder(pohon);
else
       printf("Masih kosong!");
break;
       Saat pertama kali pernyataan yang ada dalam case 4 dijalankan, maka yang akan dilakukan program adalah melakukan pengecekan kondisi apakah pohon bernilai NULL? Jika pohon bernilai NULL artinya belum ada data sama sekali sehingga akan ditampilkan string “Masih kosong”.
   Sebaliknya, jika pohon tidak sama dengan NULL, artinya sudah terbentuk node/ tree maka akan dipanggil fungsi “postOrder(pohon)”Untuk algoritma postOrder hampir mirip dengan pre Order yaitu tetap menggunakan rekursif bersarang, dimana fungsi rekursif yang berada di paling dalam dikerjakan sampai selesai terlebih dahulu, baru kemudian fungsi yang ada di luar diselesaikan

Jika user memilih menu 5, maka perulangan do-while akan dihentikan dan selanjutnya keluar dari program.

5. Keluar dari pernyataan switch-case, ulang program selama input tidak samadengan 5
6. Selesai

Output :
1. Tambah data (Data yang diinput berturut-turut adalah 40, 25, 50, 10, 30, 45, 60). Output yang ditampilkan adalah output dari input data terakhir.

                                   
2. Lihat pre-order

            
3. Lihat in-order

                                   
4. Lihat post-order

                                   
5. Exit
                                 

Follow Us @joseandreanhalomoan