二叉树的其他重要操作

1,建树

代码:

 1 //建树
 2 void pre(tree &bt)     //先序次序输入
 3 {
 4     char ch;
 5     ch=getchar();    //单链表存储结构,bt为指向根结点的指针,$为空树
 6     if(ch!='$')
 7     {
 8         bt=new node;   //建立根节点
 9         bt->data=ch;
10         pre(bt->l);    //建立左子树
11         pre(bt->r);    //建立右子树
12     }
13     else bt=NULL;
14 }

2,删除树

代码:

1 void dis(tree &bt)
2 {
3     if(bt)
4     {
5         dis(bt->l);    //删除左子树
6         dis(bt->r);    //删除右子树
7         delete bt;     //释放父节点
8     }
9 }

 3,插入一个数到排序二叉树中

代码:

 1 //插入一个节点到二叉树中
 2 void insert(tree &bt,int n)
 3 {
 4     if(bt)
 5     {
 6         if(n<bt->data)
 7           insert(bt->l,n);
 8         else if(n>bt->data)
 9                insert(bt->r,n);
10     }
11     else
12     {            //新开一个空间 
13         bt=new node;
14         bt->data=n;
15         bt->l=bt->r=NULL;
16     }
17 } 

 

4,在排序二叉树中查找一个数,找到返回该节点,否则返回NULL

代码:

 1 //在排序二叉树中查找一个数,找到返回该结点,否则返回NULL
 2 tree find(tree bt,int n)
 3 {
 4     if(bt)
 5     {
 6         if(n<bt->data)
 7           find(bt->l,n);
 8         else if(n>bt->data)
 9                find(bt->r,n);
10              else
11                return bt;
12     }
13     else
14       return NULL;
15 } 

 

原文地址:http://www.cnblogs.com/xdzxmuchen/p/16833179.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性