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<<')';
}
}
}
C++二叉树的重要操作
最新推荐文章于 2024-03-10 15:20:09 发布