当前位置: 首页 > news >正文

青岛开发区建设局网站推广项目

青岛开发区建设局网站,推广项目,网络科技加我qq是干嘛,做购物网站的开题报告for循环版本的:C BinarySercahTree for version-CSDN博客 Inorder()在c BinarySerschTree for verison写了。 还是按照那种嵌套的方式来写递归。 现在来写查找 FindR() bool FindR(){return _FindR(_root);}然后_FindR()函数写递归具体实现: 假设要…

for循环版本的:C++ BinarySercahTree for version-CSDN博客

Inorder()在c++ BinarySerschTree for verison写了。

还是按照那种嵌套的方式来写递归。

现在来写查找

FindR()

bool FindR(){return _FindR(_root);}

然后_FindR()函数写递归具体实现:

假设要找13,就让13和root比,key大root就往右,key小就往左,找到空就不找了,找到了

bool _FindR(Node* root,const K& key){
while(cur)
{Node* cur = root;if (root == nullptr)return false;if (key > cur->_key) return _FindR(cur->_right, key);else if (key < cur->_key) return _FindR(cur->_left, key);return true;
}}

假设要找12,那找到空都找不到,那就返回false

bool _FindR(Node* root,const K& key)
{while (cur){Node* cur = root;if (root == nullptr)return false;if (key > cur->_key) return _FindR(cur->_right, key);else if (key < cur->_key) return _FindR(cur->_left, key);return true;return  true}return false;}

InsertR()

	bool InsertR(){return _Insert(root,key);}
	bool _InsertR(Node* _root,const  K& key){if (key > root->_key) return _InsertR(root->_right, key);else if (key < root->_key) return _InsertR(root->_left, key);else return false;//相等不让插入}

push

在root为空的时候插入

	if (root == nullptr) { root = new Node(key); return true; }

链接

还可以用快慢指针的方式链接。

也可以用下面这种方式:引用

bool _InsertR(Node*& _root,const  K& key)

画图解析:

要插入9,root最后会走到空节点:

root又是一个引用,是10节点的别名:

 root = new Node(key);

把key值给给root就是给root->letf

这样就链起来了:

 

测试:

EraserR

基本架构

	bool EraserR(const K& key){return   _EraserR(_root, key);}
bool _EraserR(Node* root,const K& key){if (root == nullptr) return false;if (key > root->_key) return _EraserR(root->_right, key);else if (key < root->_key) return _EraserR(root->_left, key);else{//否则就是找到了//开始删除}}

下面有3种情况要处理

左为空,右为空,左右都不为空

先看左为空的情况:

假设我们要删除10,10比8小,root往右走,走到10,找到了,root->left==nullptr

然后删除10,再把8和14链起来

bool _EraserR(Node*& root,const K& key){if (root == nullptr) return false;if (key > root->_key) return _EraserR(root->_right, key);else if (key < root->_key) return _EraserR(root->_left, key);else{//否则就是找到了//开始删除Node* del = root;if (root->_left == nullptr)root= root->_right;delete del;}}

这里仍然用到了引用:

&root=root->right

例如10是8的别名:

然后 root= root->_right;

root是root->right的别名,也就是10,10的right是14,把14给给8:

把3给给1,就是把14给给8,就把8和14链起来了。

再把10给删掉:

 右边为空也一样:

if (root->_right == nullptr){root = root->_left;delete del;}

如果要删除的节点为root,比如要删除8:

http://www.tj-hxxt.cn/news/107778.html

相关文章:

  • 制作手机端网站开发网站之家查询
  • 卧龙区网站建设价格网络营销的发展现状及趋势
  • 网页制作一个网站八个页面咋做百度上首页
  • 南昌网站建设案例佛山优化网站关键词
  • 请写出网站建设的整个过程全自动推广引流软件
  • 宽带办理多少钱seo排名点击首页
  • 项城做网站信息发布网站有哪些
  • 商城网站建设目的优化软件刷排名seo
  • 青岛网站建设定制开发俄罗斯搜索引擎yandex
  • 大连网站建设找简维科技企业网搭建
  • 视频分享网站怎么做武汉服装seo整站优化方案
  • 住房和城乡建设部幼儿园网站推广管理
  • 网站建设叫什么软件网络seo推广
  • 专业的个人网站建设哪家天津seo方案
  • 做语音聊天网站要多少钱外贸怎么建立自己的网站
  • 上海企业体检武汉seo网站优化技巧
  • 可以做网站的渠道营销策划品牌策划
  • 做二手房产网站多少钱百度人工在线客服
  • 怎么自己创建一个网站磁力搜索器下载
  • 南昌建站方案创建网页
  • 网站备案现场做微商如何引流推广怎么找客源
  • 淄博手机网站开发公司优化网络
  • 公司视频宣传片拍摄长沙网站seo诊断
  • 建设网站要买服务器国内手机搜索引擎十大排行
  • 网站设计与规划免费b站推广网站破解版
  • 营销型网站建设实战》模板建站网页
  • 做网站运营需要培训吗新品推广计划与方案
  • 网站建设发票的税点爱情链接
  • 北京最新楼盘排行榜seo刷词工具在线
  • 一个网站做网站地图的目的电话营销外包公司