#include <cstdlib>
#include <iostream>
using namespace std;
class BinaryTree{
private :
struct tree_node
{
tree_node* left;
tree_node* right;
char data;
};
tree_node* root;
public:
BinaryTree()
{
root = NULL;
}
bool isEmpty() const { return root==NULL; }
void print_inorder();
void inorder(tree_node*);
void print_preorder();
void preorder(tree_node*);
void print_postorder();
void postorder(tree_node*);
void insert(char);
void input();
};
int in;
char tmp,tmp1;
int n;
cout<<"masukan banyak data : ";
cin>>n;
for(int i=0;i<n;i++){
cout<<" Masukkan Node pohon : ";
cin>>tmp;
insert(tmp);
}
cout<<endl;
cout<<" Hasil In-Order : ";
print_inorder();
cout<<endl;
cout<<" Hasil Pre-Order : ";
print_preorder();
cout<<endl;
cout<<" Hasil Post-Order : ";
print_postorder();
cout<<endl;
}
void BinaryTree::insert(char d)
{
tree_node* t = new tree_node;
tree_node* parent;
t->data = d;
t->left = NULL;
t->right = NULL;
parent = NULL;
if(isEmpty()) root = t;
else
{
tree_node* curr;
curr = root;
while(curr)
{
parent = curr;
if(t->data > curr->data) curr = curr->right;
else curr = curr->left;
}
if(t->data < parent->data)
parent->left = t;
else
parent->right = t;
}
}
void BinaryTree::print_inorder()
{
inorder(root);
}
void BinaryTree::inorder(tree_node* p)
{
if(p != NULL)
{
if(p->left) inorder(p->left);
cout<<" "<<p->data<<" ";
if(p->right) inorder(p->right);
}
else return;
}
void BinaryTree::print_preorder()
{
preorder(root);
}
void BinaryTree::preorder(tree_node* p)
{
if(p != NULL)
{
cout<<" "<<p->data<<" ";
if(p->left) preorder(p->left);
if(p->right) preorder(p->right);
}
else return;
}
void BinaryTree::print_postorder()
{
postorder(root);
}
void BinaryTree::postorder(tree_node* p)
{
if(p != NULL)
{
if(p->left) postorder(p->left);
if(p->right) postorder(p->right);
cout<<" "<<p->data<<" ";
}
else return;
}
int main()
{
BinaryTree b;
b.input();
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Hasil Compiler
Kunjungan pada pohon BINER
- kunjungan dilakukan pada setiap Node tepat satu kali ( Binary Tree Traversal ).
- dilakukan secara lengkap --> diperoleh informasi secara linier.
- kunjungan dilakukan secara :
- Kunjungan PREORDER
kunjungan ini disebut juga dengan depth first order.urutan pengunjungannya pertama
dicetak isi Node yang dikunjungi.kedua kunjungi cabang paling kiri dan ketiga kunjungi
cabang kanannya, terlihat seperti gambar hasil PREORDER diatas adalah
J D A G E F H R M P Q T
2. Kunjungan INORDER
kunjungan ini disebut juga dengan kunjungan symmetric order.urutan pengunjungannya
pertama kunjungi cabang paling kiri. kedua cetak isi node yang dikunjungi dan ketiga
kunjungi cabang kanannya, terlihat seperti gambar hasil INORDER diatas adalah
A D E F G H J M P Q R T
3. Kunjungan POSTORDER
urutan pengunjungannya, pertama kunjungi cabang kiri.kedua kunjungi cabang kanan dan
ketiga cetak isi node yang dikunjungi, terlihat seperti gambar hasil POSTORDER diatas
adalah
A F E H G D Q P M T R J
0 komentar:
Posting Komentar