You are on page 1of 5

#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<iostream.

h> typedef char infotype; typedef struct nodetype *nodep; struct nodetype { infotype data; nodep left,right; }; nodep ptree; nodep getnode (void) { nodep p; p=new nodetype; return(p); } void freenode(nodep p) { free(p); } void initialize(nodep *ptree) { *ptree=NULL; } nodep makenode(int x) { nodep p; p=getnode(); p->data=x; p->left=NULL; p->right=NULL; return(p); } void setleft(nodep p,int x) { if(p==NULL) printf("Nut cha khong hien huu\n"); else if(p->left!=NULL) printf("Nut cha da co nut con ben trai \n"); else p->left=makenode(x); } void setright(nodep p,int x) { if(p==NULL) printf("Nut cha khong hien huu\n"); else if(p->right!=NULL) printf("Nut cha da co nut con ben phai\n"); else p->right=makenode(x); } void insert (nodep tree,char x) {

if(x==tree->data) { printf("bi trung noi dung,khong them nut nay duoc"); return; } if(x<tree->data&&tree->left==NULL) { setleft(tree,x); return;*** } if(x>tree->data&&tree->right==NULL) { setright(tree,x); return; } if(x<tree->data) insert(tree->left,x); else insert(tree->right,x); } void taocay() { nodep p; char data; initialize(&ptree); data='A'; if(ptree==NULL) ptree=makenode(data); else insert(ptree,data); p=ptree; setleft(p,'B'); setright(p,'C'); p=p->left; setleft(p,'D'); setright(p,'E'); p=p->left; setleft(p,'G'); setright(p,'H'); p=ptree; p=p->right; setright(p,'F'); p=p->right; setright(p,'I'); p=p->right; setleft(p,'J'); setright(p,'F'); } void inorder(nodep T) { if(T) { inorder(T->left); printf("%4d",T->data); inorder(T->right); } } void preorder(nodep T) { if(T) { printf("%4d",T->data); preorder(T->left); preorder(T->right);

} } void postorder(nodep T) { if(T) { postorder(T->left); postorder(T->right); printf("%4d",T->data); } } void taocay2() { nodep p; char data; initialize(&ptree); data='+'; if(ptree==NULL) ptree=makenode(data); else insert(ptree,data); p=ptree; setleft(p,'+'); setright(p,'/'); p=(p->left); setleft(p,'5'); setright(p,'*'); p=p->right; setleft(p,'3'); setright(p,'+'); p=p->right; setleft(p,'-'); setright(p,'1'); p=p->left; setleft(p,'7'); setright(p,'2'); p=ptree; p=p->right; setleft(p,'6'); setright(p,'2'); } int sonut(nodep t) { if(t==NULL) return 0; else return(sonut(t->left)+sonut(t->right)+1); } int sonutla(nodep t) { if(t==NULL) return 0; else if(t->left==NULL && t->right==NULL) return 1; else return(sonutla(t->left)+sonutla(t->right)); } int sonhanh(nodep t) { if(t==NULL) return 0; else if(t->left!=NULL||t->right!=NULL) return (sonhanh(t->left)+sonhanh(t->right)); else return 1; } int tongcacnut(nodep t) {

if(t==NULL) return 0; else return(tongcacnut(t->left)+tongcacnut(t->right)+t->data); } int tongcacnutla(nodep t) { if(t==NULL) return 0; else if(t->left==NULL && t->right==NULL) return t->data; else return(tongcacnutla(t->left)+tongcacnutla(t->right)); } int demsochan(nodep t) { if(t==NULL) return 0; else if ((t->data)%2==0) return(demsochan(t->left)+demsochan(t->right)+1); else return(demsochan(t->left)+demsochan(t->right)); } int chieucao(nodep t) { if(t==NULL) return 0; else { int l,r; l=chieucao(t->left); r=chieucao(t->right); if(l>r)return l+1; else return r+1; } } int insertnode(nodep &T, infotype X) { if(T) { if(T->data == X) return 0; //da co if(T->data > X) return insertnode(T->left, X); else return insertnode(T->right, X); } T = new nodetype; if(T == NULL) return -1; //thieu bo nho T->data =X; T->left =T->right =NULL; //them vao thanh cong return 1; } void taocay3() { int n,x; cout<<"nhap vao sl ptu="; cin>>n; for(int i=0;i<n;i++) { cout<<"nhap vao ptu ="; cin>> x; insertnode(ptree,x); } } void main() { clrscr;

/* printf("\n Tao cay:"); taocay(); printf("\n preorner duyet cay NLR:"); preorder(ptree); printf("\n Inorder duyet cay LNR:"); inorder(ptree); printf("\n postorder dyet cay LRN:"); postorder(ptree); taocay2(); printf("\n preorner duyet cay NLR:"); preorder(ptree); printf("\n Inorder duyet cay LNR:"); inorder(ptree); printf("\n postorder duyet cay LRN:"); postorder(ptree); taocay(); cout<<"\n so nut la:"<< sonut(ptree); cout<<"\n so nut la la:"<<sonutla(ptree); cout<<"\n so nhanh la :"<<sonhanh(ptree); cout<<"\n tong cac nut la:"<<tongcacnut(ptree); cout<<"\n tong cac nut la la:"<<tongcacnutla(ptree); cout<<"\n so chan la:"<<demsochan(ptree); cout<<"\n chieu cao cua cay la:"<<chieucao(ptree);*/ taocay3(); printf("\n preorner duyet cay NLR:"); preorder(ptree); printf("\n Inorder duyet cay LNR:"); inorder(ptree); printf("\n postorder dyet cay LRN:"); postorder(ptree); getch(); }

You might also like