树的其他操作
作者:
Juan
,
2021-07-26 09:36:03
,
所有人可见
,
阅读 334
//1.建立一颗二叉树
void pre_ctr(tree &bt)
{
char ch;
ch = getchar();
if(ch != '$')//扩展二叉树
{
bt = new node;
bt->data = ch;
pre_crt(bt->lchild);
pre_crt(bt->rchild);
}
else
bt = NULL;
}
//2.删除二叉树
void dis(tree &bt)
{
if(bt)
{
dis(bt->lchild);
dis(bt->rchild);
delete bt;
//删除一个指针p(delete p;)实际意思是删除了p所指的目标(变量或对象等),释放了它所占的堆空间,而不是删除p本身
//(指针p本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放),释放堆空间后,p成了空指针。
}
}
//3.插入一个节点到排序二叉树中
void insert(tree &bt, int n)
{
if(bt)
{
if(n < bt->data)
insert(bt->lchild, n);
else if(n > bt->data)
insert(bt->rchild, n);
}
else
{
bt = new node;
bt->data = n;
bt->lchild = bt->rchild = NULL;
}
}
//4.在排序二叉树中查找一个数,找到返回该节点,否则返回NULL(空)
int findn(tree bt, int n)
{
if(!bt) return NULL;
if(n < bt->data)
findn(bt->lchild, n);
else if(n > bt->data)
findn(bt->rchild, n);
else
return bt;
}
//5.用嵌套括号表示法输出二叉树
void print(tree bt)
{
if(bt)
{
cout<<bt->data;
if(bt->lchild||bt->rchild)
{
cout<<'(';
print(bt->lchild);
if(bt->rchild)
cout<<',';
print(bt->rchild);
cout<<')';
}
}
}