二叉树的建立,删除,查找,插入,输出(数据结构)
2017-08-30 18:32
387 查看
1. 建立二叉树
void pre_crt(tree &bt)//按先序顺序输入二叉树中节点的值,生成{
char ch;
ch=getchar();//二叉树的单链表存储结构,bt为指向根节点的指针,,'$'表示空树
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;//释放父节点
}
}
3. 在二叉排序树中插入一个数
二叉排序树又称“二叉查找树”、“二叉搜索树”。(左小右大)http://www.cnblogs.com/zhuyf87/archive/2012/11/09/2763113.html二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树:
1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
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. 在二叉排序树中查找一个数
找到返回该节点,否则返回NULLtree findn(tree bt,int n)
{
if(bt)
{
if(n<bt->data) findn(bt->lchild,n);
else if(n>bt->data) findn(bt->rchild,n);
else return bt;
}
else return NULL;
}
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<<')';
}
}
}
结论:已知先序序列和中序序列可以确定出二叉树;
已知中序序列和后序序列也可以确定出二叉树;
但,已知先序序列和后序序列却不可以确定出二叉树;
例如:已知结点的先序序列为ABCDEFG,中序序列为CBEDAFG。可以唯一构造出二叉树。过程见下图:
相关文章推荐
- 数据结构---搜索二叉树的插入、删除、查找
- 数据结构实践---单链表的初始化,建立,插入,查找,删除。
- 建立完整的单向动态链表(包括初始化、创建、插入、删除、查找、销毁、输出)
- 线性表的建立插入删除查找(浙大数据结构)
- 【高质量代码实践】【链表】链表的建立,查找,删除,插入和输出
- 顺序二叉树的建立、查找、删除、插入、替换、遍历
- 链表的基本操作(C语言版):建立,插入,删除,查找,输出
- 2、(c++)顺序表的建立、输出、查找、按元素位置删除代码
- 顺序队列的初始化,建立,插入,查找,删除。
- 数据结构--二叉树按层次建立和按层次输出二叉树的内容
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 顺序表的实现以及简单的 插入,删除,查找,输出操作
- 二叉树的创建,遍历,查找,删除,插入,修改
- 顺序栈的初始化,建立,插入,查找,删除
- 二叉树的创建,插入,删除,输出,求高度,求度以及三种遍历方式实现
- 常见数据结构查找、插入、删除、遍历性能比较 常见排序算法的比较(图)
- 算法学习----二叉树的查找、 删除、插入、遍历
- 算法---二叉树的建立,查找,删除
- 【二叉树】二叉搜索树创建、插入、删除、查找等操作
- 数据结构学习-二叉搜索树-查找、插入、删除