博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树查找
阅读量:5761 次
发布时间:2019-06-18

本文共 2889 字,大约阅读时间需要 9 分钟。

1.对象:无重复数字

2.查找代码

Bts_node* search_Bts(Bts_node *bt,int k){    if(bt==NULL||bt->data==k)        return bt;    if(k
data) return search_Bts(bt->lchild,k); else return search_Bts(bt->rchild,k); }

 

3.删除代码

void delete2(Bts_node *p,Bts_node *&r){    Bts_node *q;    if(r->rchild!=NULL)//找到最大的节点(右边大),用while也许也行       delete2(p,r->rchild);    else    {        p->data=r->data;        q=r;        r=r->lchild;        delete(q);    }}void delete1(Bts_node *&p){    Bts_node *q;    if(p->rchild==NULL)//只有左子树    {        q=p;        p=p->lchild;        delete(q);    }    else if(p->lchild==NULL)//只有右子树    {        q=p;        p=p->rchild;        delete(q);    }    else        delete2(p,p->lchild);}bool delete_Bts(Bts_node *&bt,int k){    if(bt==NULL)      return false;    else    {        if(k
data) return delete_Bts(bt->lchild,k); else if(k>bt->data) return delete_Bts(bt->rchild,k); else { delete1(bt); return true; } }}

 

4.实例:

 

#include
using namespace std;struct Bts_node{ int data; Bts_node *lchild,*rchild;};bool insert_Bts(Bts_node *&bt,int k){ if(bt==NULL) { bt=new Bts_node; bt->data=k; bt->lchild=bt->rchild=NULL; } if(k==bt->data) return false; else { if(k>bt->data) insert_Bts(bt->rchild,k); else insert_Bts(bt->lchild,k); }}Bts_node *create_Bts(int n){ Bts_node *bt=NULL; for(int i=0;i
>temp; insert_Bts(bt,temp); } return bt;}Bts_node* search_Bts(Bts_node *bt,int k,Bts_node *f,Bts_node *&f1){ if(bt==NULL) { f1=NULL; return NULL; } else if(bt->data==k) { f1=f; return bt; } else if(k
data) return search_Bts(bt->lchild,k,bt,f1); else return search_Bts(bt->rchild,k,bt,f1);} void print(Bts_node *b1) { if(b1!=NULL) { cout<
data; if(b1->lchild!=NULL||b1->rchild!=NULL) { cout<<"("; print(b1->lchild); if(b1->rchild!=NULL) { cout<<","; print(b1->rchild); } cout<<")"; } } }Bts_node* search_Bts(Bts_node *bt,int k){ if(bt==NULL||bt->data==k) return bt; if(k
data) return search_Bts(bt->lchild,k); else return search_Bts(bt->rchild,k); }int main(){ Bts_node *bt,*f1; int n; cout<<"n="; cin>>n; bt=create_Bts(n); int k; cout<<"k="; cin>>k; cout<
data<
data<
View Code

 

转载于:https://www.cnblogs.com/shenyuling/p/10064750.html

你可能感兴趣的文章
工作中如何做好技术积累
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
求职准备 - 收藏集 - 掘金
查看>>
jQuery|元素遍历
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
php图片赋值,php如何优雅地赋值
查看>>
Failed to connect to remote VM. Connection refused. Connection refused: connect
查看>>
OracleLinux安装说明
查看>>
nova分析(7)—— nova-scheduler
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
Java 重载、重写、构造函数详解
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>