C++二叉樹的重要操作

typedef struct node;
typedef node *tree;
struct node
{
char data;
tree lc,rc;
};
tree bt;


//1.建立一顆二叉樹 
void pre_crt(tree &bt)
{
char ch;
ch=getchar();//二叉樹的單鏈表儲存結構,bt爲指向根節點的指針,'$'表示空串 
if(ch!='$')
{
bt=new node;//建根節點 
bt->data=ch;
pre_crt(bt->lc);//建左子樹 
pre_crt(bt->rc);//建右子樹 
}
else bt=NULL;
}


//2.刪除二叉樹
void dis(tree &bt)
{
if(bt)
{
dis(bt->lc);//刪左子樹 
dis(bt->rc);//刪右子樹 
delete bt;//釋放父結點 
}
}


//3.插入一個結點到排序二叉樹中
void insert(tree &bt,int n)//插入一個結點到排序二叉樹中
{
if(bt)
{
if(n<bt->data)
insert(bt->lc,n);
else
if(n>bt->data) insert(bt->rc,n);
}
else 
{
bt=new node;//新開一個空間 
bt->data=n;
bt->lc=bt->rc=NULL;
}
} 


//4.在排序二叉樹中查找一個數,找到返回該結點,否則返回NULL
void findn(tree bt,int n)
{
if(bt)
{
if(n<bt->data)
findn(bt->lc,n);
else
if(n>bt->data) findn(bt->rc,n);
else return bt;
}
else return NULL;
}


//5.用嵌套括號表示輸出二叉樹
void print(tree bt)
{
if(bt)
{
cout<<bt->data;
if(bt->lc||bt->rc)
{
cout<<'(';
print(bt->lc);
if(bt->rc) cout<<',';
print(bt->rc);
cout<<')';
}
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章