Escolar Documentos
Profissional Documentos
Cultura Documentos
NPM : 25115813
Kelas : 2KB88
Fakultas : Ilmu Komputer
Jurusan : Sistem Komputer
Mata Kuliah : Struktur Data
Dosen : Dyah Anggraini, M.Eng.Sc., MMSI., PhD
#include <iostream>
struct node{
int data;
};
class BST{
public:
node *tree;
BST(){
tree=NULL;
void deleteNode(int);
};
if(*tree == NULL){
(*tree)->data = item;
(*tree)->left = NULL;
(*tree)->right = NULL;
else{
createTree( &((*tree)->left),item);
else
createTree( &((*tree)->right),item);
if( tree!=NULL){
preOrder(tree->left);
preOrder(tree->right);
if( tree!=NULL){
inOrder( tree->left);
inOrder(tree->right);
postOrder( tree->left);
postOrder( tree->right);
cout<<" "<<tree->data;
*height = 0;
else{
determineHeight(tree->left, &left_height);
determineHeight(tree->right, &right_height);
*height = left_height + 1;
else
*height = right_height + 1;
return 0;
else
return 0;
else
}
int BST :: externalNodes(node *tree){
if( tree==NULL )
return 0;
return 1;
else
removeTree( &(*tree)->left );
removeTree( &(*tree)->right );
delete( *tree );
return tree;
else
cout<< tree->data;
else
findSmallestNode( tree->left);
if(succ!=NULL){
return(succ);
cout<<tree->data;
else
findLargestNode(tree->right);
node *curr=tree,*succ,*pred;
int flag=0,delcase;
pred = curr;
curr = curr->left;
pred = curr;
curr = curr->right;
flag=1;
}
if(flag==0){
getch();
goto end;
else
//Deletion Case 1
if(delcase==1){
else
pred->right=NULL;
//Deletion Case 2
if(delcase==2){
if(curr->left==NULL)
pred->left=curr->right;
else
pred->left=curr->left;
else{ //pred->right=curr
if(curr->left==NULL)
pred->right=curr->right;
else
pred->right=curr->left;
delete(curr);
//Deletion case 3
if(delcase==3){
curr->data = item1; //Replace the data with the data of //in order successor.
end:;
int main(){
BST obj;
int choice;
int height=0,total=0,n,item;
node **tmp;
while(1){
system("cls");
cout<<"2) Traversal\n";
cout<<"13) Exit\n";
cin>>choice;
switch(choice){
cout<<"\n\n--Creating Tree--";
cin>>n;
for(int i=0;i<n;i++){
cin>>item;
obj.createTree(&obj.tree,item);
break;
obj.inOrder(obj.tree);
obj.preOrder(obj.tree);
obj.postOrder(obj.tree);
getch();
break;
obj.determineHeight(obj.tree,&height);
getch();
break;
total=obj.totalNodes(obj.tree);
getch();
break;
total=obj.internalNodes(obj.tree);
getch();
break;
total=obj.externalNodes(obj.tree);
getch();
break;
obj.removeTree(&obj.tree);
getch();
break;
cin>>item;
obj.createTree(&obj.tree,item);
cout<<"\nItem is inserted\n";
getch();
break;
cin>>item;
&(*tmp) == obj.searchElement(&obj.tree,item);
if(&(*tmp) == NULL)
else
getch();
break;
obj.findSmallestNode(obj.tree);
getch();
break;
obj.findLargestNode(obj.tree);
getch();
break;
cin>>item;
obj.deleteNode(item);
break;
case 13 : exit(1);
}//end of switch