海南公司注册网站友情链接属于免费推广吗

张小明 2026/1/13 7:13:02
海南公司注册网站,友情链接属于免费推广吗,新县住房和城乡规划建设网站,下载类wordpress主题二叉查找树适合动态查找#xff0c;即随时可能有插入和删除操作Binary Search Tree的定义 对于一颗非空BST#xff0c;其左子树上的所有节点的data小于其根节点的data#xff0c;其右子树上的所有节点的data大于其根节点的dataBST的非空左子树和非空右子树也是BST 利用BST左…二叉查找树适合动态查找即随时可能有插入和删除操作Binary Search Tree的定义对于一颗非空BST其左子树上的所有节点的data小于其根节点的data其右子树上的所有节点的data大于其根节点的dataBST的非空左子树和非空右子树也是BST利用BST左小于右的特性可以用来找到BST中两个节点的最近的共同的祖先节点这里可以把节点自己也算作祖先从根节点开始若两个节点的key都小于当前节点的key说明公共祖先在左子树上递归左子树若两个节点的key都大于当前节点的key说明公共祖先在右子树上递归右子树否则说明公共祖先就是这个节点BST查找特定key递归实现假设在函数外有一个指针接收找到的节点的地址没找到返回空对于当前访问的节点若不为空有三种要查找的key小于当前节点则递归查找左子树要查找的key大于当前节点则递归查找右子树要查找的key等于当前节点则返回当前节点的指针TreeNode* BSTfind(TreeNode* t,DataType key){ if(!root)return nullptr; if(keyt-data)return BSTfind(t-left,key); //1. else if(keyt-data)return BSTfind(t-right,key); //2. else return t; //3. }注意到这是尾递归所以可以写成迭代函数迭代实现TreeNode* BSTfind(TreeNode* t,DataType key){ TreeNode* pt; //用p指针来访问节点 while(p){ if(keyp-data)pp-left; //1. else if(keyp-data)pp-right; //2. else break; //3. } return p; }BST查找最小值和最大值根据BST的特性一颗BST的最小值在最左端的节点上最大值在最右端的节点上也是尾递归递归实现TreeNode* findMin(TreeNode* t){ //找最小值 if(!t)return nullptr; //空树的情况 if(t-left)return findMin(t-left); //没到最左端 else return t; //到了最左端 } TreeNode* findMax(TreeNode* t){ if(!t)return nullptr; if(t-right)return findMax(t-right); else return t; }迭代实现TreeNode* findMin(TreeNode* t){ if(!t)return nullptr; while(t-left){ tt-left; } return t; } TreeNode* findMax(TreeNode* t){ if(!t)return nullptr; while(t-right){ tt-right; } return t; }BST的插入与查找类似若走到空节点说明需要在这里插入若走到与key相等的节点则根据实际需要处理插入失败或插在子树的根节点上返回已经插入了的根节点bool isInserttrue; //判断是否插入成功 TreeNode* BSTinsert(TreeNode* t,DataType key){ if(!t){ //空节点 tnew TreeNode; t-datakey; t-leftt-rightnullptr; return t; } if(keyt-data)t-leftBSTinsert(t-left); //1. else if(keyt-data)t-rightBSTinsert(t-right); //2. else isInsertfalse; //3. return t;也可以看作是尾递归BST的删除与查找类似若走到与key相等的节点说明需要在这里删除若走到空节点则说明BST中找不到需要删除的节点返回已经删除了的根节点若找到了需要删除的节点若该节点左子树和右子树都为空则返回空其实就是返回空左子树和空右子树其中之一可合并为下面两种情况若该节点存在左子树右子树为空则返回左子树回收该节点若该节点存在右子树左子树为空则返回右子树回收该节点若左右子树都不空有两种方案找到左子树上的最大值节点leftMax与该节点交换data然后递归删除leftMax找到右子树上的最小值节点rightMin与该节点交换data然后递归删除rightMinleftMax和rightMin都是存在空子树的情况删除比较简单bool isDeletetrue; TreeNode* BSTdelete(TreeNode* t,key){ if(!t){ //找不到要删除的节点 isDeletefalse; return t; //不做处理直接返回 } if(keyt-data)t-leftBSTdelete(t-left,key); else if(keyt-data)t-rightBSTdelete(t-right,key); else { if(t-leftt-right){ //左右子树都不空 TreeNode* leftMin; leftMaxfindMin(t-left); t-dataleftMin-data; //和t交换 t-leftBSTdelete(t-left,leftMin-data); //删除leftMax } else if(t-left){ //左子树不空 TreeNode* tmpt; tt-left; delete tmp; //回收 } else { TreeNode* tmpt; tt-right; delete tmp; } } return t; //返回已经删除了的根节点 }BST的缺点随着插入和删除操作增多可能出现斜二叉树这种极端情况因为BST的查找和删除操作的最坏时间复杂度都是树的高度所以树的高度越小越好优化平衡二叉树
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

汕头市网站建设房产网加盟

UEFITool完整指南:从入门到精通UEFI固件分析 【免费下载链接】UEFITool UEFI firmware image viewer and editor 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITool 想要深入了解计算机启动过程的核心秘密吗?UEFITool作为专业的UEFI固件映像…

张小明 2025/12/31 0:56:54 网站建设

网站制作的文章做网站首次备案需要哪些资料

视频压缩终极指南:从大文件到小体积的完整教程 【免费下载链接】compressO Convert any video into a tiny size. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 你是否曾经因为视频文件太大而无法通过邮件发送?或者想要在社交媒体上分…

张小明 2025/12/31 4:55:07 网站建设

flash网站怎么做音乐停止phpmysql旅游网站开发

第一章:Open-AutoGLM 本地部署指南在本地环境中部署 Open-AutoGLM 可以有效保障数据隐私并提升推理响应速度。本章将详细介绍从环境准备到服务启动的完整流程,适用于具备基础 Linux 操作能力的开发者。环境依赖与准备 部署前需确保系统已安装以下核心组件…

张小明 2025/12/31 0:24:55 网站建设

中国建设银行官网站e路通下载免费建小程序网站

NocoDB数据导出实用技巧:从日常报表到系统集成 【免费下载链接】nocodb nocodb/nocodb: 是一个基于 node.js 和 SQLite 数据库的开源 NoSQL 数据库,它提供了可视化的 Web 界面用于管理和操作数据库。适合用于构建简单的 NoSQL 数据库,特别是对…

张小明 2025/12/31 1:45:27 网站建设

广西网站建设定制wordpress自定义内容的小工具

Vue3项目多环境配置管理实战指南:从开发到生产的一站式解决方案 【免费下载链接】RuoYi-Vue3 :tada: (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统 项目地址: …

张小明 2026/1/1 3:57:19 网站建设

用手机做电影网站做外贸怎么连接国外网站

FaceFusion能否处理引力透镜扭曲图像?天文影像修正在詹姆斯韦布空间望远镜(JWST)不断传回遥远星系高清图像的今天,一个令人着迷又棘手的现象反复出现:那些本应呈椭圆或旋涡状的星系,在观测中却化作断裂的弧…

张小明 2026/1/9 8:13:18 网站建设