cay
Cây
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <conio.h>
using namespace std;
// moi nut gom data va node
typedef struct DATA
{
int key;
}DATA;
typedef struct pNODE
{
DATA info;
pNODE *pLeft,*pRight;
}NODE;
typedef NODE * TREE;
//Khoi Tao
Void IniTree(Nodeptr &root)
{
Root =null;
}
// kiem tra rong
Int IsEmpty(Nodeptr root)
{
If(root==null)
Return 1;
Else return 0;
}
//tao nut
Nodeptr GetNode(int x)
{
Nodeptr P=new Node;
P->data=x;
P->left =null;
P->right=null;
Return P;
}
int DemNutLa(TREE t) // tinh so nut la cua cay
{
if(t)
{
if(t->pLeft == NULL && t->pRight == NULL)
return 1;
else
return DemNutLa(t->pLeft)+DemNutLa(t->pRight);
}
else
return 0;
}
int DemNutLaCay(TREE t)
{
if(t = NULL)
{
return 0;
}
else
{
int NL = DemNutLaCay(t->pLeft);
int NR = DemNutLaCay(t->pRight);
return (NL+NR+1);
}
}
typedef struct DATA1
{
int key;
}DATA;
typedef struct tNode
{
DATA info;
tNode*pleft,*pright;
}Node;
typedef Node * Tree;
int DemNutLa(Tree tr)
{
if(tr== NULL)
{
return 0;
}
else
{
int NL = DemNutLa(tr->pleft);
int NR = DemNutLa(tr->pright);
return(NL+NR+1);
}
}
//Them nut vao cay
Int Ins (pNode &r, int k)
{
if (!r)//r==NULL
{
pNode p = new Node;
p -> key = k;
p -> left = p -> right = NULL;
r = p;
return 1;
}
if (r -> key == k)return 0;
if (r -> key > k) return Ins (r->left,k);
else return Ins (r->right,k);
}
Int Insert (Tree &t,int K)
{
Return Insert (t.root,k);
}
//Tim khoa co trong cay hay khong
int Search(pNode r,int k)
{ if (!r) return 0;
if (r->key == k) return 1;
if (r->key > k)
return Search(r->left,k);
else
return Search(r->right,k);
}
int Search(Tree t,int k)
{
return Search(t.root,k);
}
//Duyet cay
void LNR (pNode r)
{
if (!r)
return;
lnr(r->left);
cout<<r->key<<" ";
lnr(r->right);
}
void LNR(Tree t)
{
LNR(t.root);
}
//Tao cay
Void CreateTree (Tree &t)
{
int k;
do
{
cout<<"Nhap nut can them: “;cin>>k;
if (k!=-1)
if (Insert(t,k))
cout<<"Thanh cong"<<endl;
else
cout<<"Nut da co trong cay"<<endl;
}while (k!=-1);
}
Bạn đang đọc truyện trên: Truyen2U.Com