您的位置:首页 > 理论基础 > 数据结构算法

二叉树的建立,删除,查找,插入,输出(数据结构)

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. 在二叉排序树中查找一个数

找到返回该节点,否则返回NULL

tree 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。可以唯一构造出二叉树。过程见下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐